如何使用本地安装在节点中的软件包

如何在node.js使用本地版本的模块。 例如,在我的应用程序中,我安装了coffee-script:

npm install coffee-script

这将它安装在./node_modules ,并且coffee命令在./node_modules/.bin/coffee 。 当我在我的项目的主文件夹中有没有办法运行这个命令? 我想我正在寻找类似bundler中的bundle exec东西。 基本上,我想指定一个与项目有关的人都应该使用的咖啡脚本版本。

我知道我可以添加-g标志来全局安装,所以咖啡在任何地方都能正常工作,但是如果我想为每个项目制作不同版本的咖啡,该怎么办?


推杆的问题

./node_modules/.bin

进入你的PATH的是,它只适用于当前的工作目录是你的项目目录结构的根目录(即node_modules的位置)

独立于您的工作目录,您可以使用本地安装的二进制文件路径

npm bin

要执行本地安装的coffee二进制文件,无论您处于项目目录层次结构中的哪个位置,都可以使用此bash构造

PATH=$(npm bin):$PATH coffee

我用npm-exec替代了这个

alias npm-exec='PATH=$(npm bin):$PATH'

所以,现在我可以

npm-exec coffee

无论我在哪里,都要运行正确的咖啡副本

$ pwd
/Users/regular/project1

$ npm-exec which coffee
/Users/regular/project1/node_modules/.bin/coffee

$ cd lib/
$ npm-exec which coffee
/Users/regular/project1/node_modules/.bin/coffee

$ cd ~/project2
$ npm-exec which coffee
/Users/regular/project2/node_modules/.bin/coffee

很好的例子

你不必操纵$PATH

npm@5.2.0,NPM附带npx包,它可以让你从本地运行的命令node_modules/.bin或从中央缓存。

只需运行:

$ npx [options] <command>[@version] [command-arg]...

默认情况下, npx将检查$PATH或本地项目二进制文件中是否存在<command> ,并执行该命令。

<command>尚未存在于$PATH时调用npx <command>会自动从NPM注册表中为您安装具有该名称的包,并调用它。 完成后,已安装的软件包将不会存在于您的全局环境中,因此您不必长期担心污染问题。 您可以通过提供--no-install选项来防止此行为。

对于npm < 5.2.0 ,您可以通过运行以下命令手动安装npx软件包:

$ npm install -g npx

使用npm bin命令获取项目的节点modules / bin目录

$ $(npm bin)/<binary-name> [args]

例如

$ $(npm bin)/bower install
链接地址: http://www.djcxy.com/p/85095.html

上一篇: How to use package installed locally in node

下一篇: Create a temporary table in a SELECT statement without a separate CREATE TABLE