NPM:如何来源./node_modules/.bin文件夹?
我在安装npm时遇到问题
我已经创build了一个项目说项目A
cd ~/projectA npm install sails
但安装后找不到sails命令。
我知道它已经成功安装在~/projectA/node_modules
目录中。 但可执行文件无法find。 我知道它已经安装~/projectA/node_modules/.bin
当我进入这个projectA文件夹时,我怎样才能自动获取.bin文件?
我做错了吗?
我可以给你一个不错的解决scheme,这对我来说是很有用的。 我只是在我的.bashrc文件中导出我的path。
export PATH="$PATH:./node_modules/.bin"
编辑:这是一段时间,但我改变了我的策略,而不是使用npm脚本。 在上面的例子中,设置package.json如下:
"scripts": { "sails": "sails" }
然后你可以运行
npm run sails
或与论据
npm run sails -- <args>
您应该使用npm bin
命令获取当前节点bin目录的绝对path。
例如:
➤ lessc bash: lessc: command not found ➤ npm bin /home/brice/[...]/node_modules/.bin ➤ export PATH=$(npm bin):$PATH ➤ lessc --version lessc 1.7.3 (Less Compiler) [JavaScript]
这可以避免相对path的问题,特别是如果你打算在一个构build系统中使用它,这个系统将调用子目录中的命令。
要像命令行一样使用命令行sails generate foo
您将需要在全局安装npm模块。
npm install -g sails
如果您不想全局安装,也可以在命令中使用bin的path:
./node_modules/sails/bin/sails.js generate foo
官方的风帆说明( https://github.com/balderdashy/sails )build议
使用命令行工具安装最新的稳定版本:
sudo npm -g install sails
这将在全局安装并添加到/usr/local/bin
目录中,该目录应位于$PATH
。
但是要回答关于二进制文件的位置的一般问题,如果你在本地安装,他们应该放在./node_modules/.bin
目录中(所以运行./node_modules/.bin/sails ...
)
更强大一点是:
export PATH=$(npm bin):$PATH
您可以运行它,将其添加到您的shellconfiguration文件,或创build一个别名,如:
alias snpm='export PATH=$(npm bin):$PATH'
如果你走别名路线,一定要使用单引号,所以它延迟variables的执行!
如果你不喜欢用你的PATH来运行一个不是全局的npm脚本 – 比如你是唯一使用它的脚本 – 我个人推荐使用sh别名。
-
npm安装(本地)你心爱的软件包(例如json-diff)
cd ~ && npm install json-diff
-
别名(保存在〜/ .xxxxrc文件中):
alias diffj "\`npm bin\`/json-diff !*"
然后,为了区分2个json的:
diffj old.json new.json
在我的~/.bashrc
,我有以下几点:
function nbin { local dir; dir=$(npm bin) if [ -d "$dir" ]; then ( # subshell to not change this shell's $PATH PATH=$dir:$PATH eval "$@" ) else echo "\"$dir\" is not an npm binary directory." >&1 return 1 fi }
然后,我可以在.bin
目录中运行可执行文件foo
,如下所示:
nbin foo