我在安装 npm 时遇到问题
我创建了一个项目说项目 A
cd ~/projectA
npm install sails
但是安装后找不到sails命令。
我知道它已成功安装在~/projectA/node_modules
目录中。但无法获取可执行文件。我知道它已安装~/projectA/node_modules/.bin
每当我进入这个 projectA 文件夹时,如何自动获取 .bin?
我做错了什么吗?
我可以给你一个不优雅的解决方案,这对我有用。我刚刚在我的 .bashrc 文件中导出了我的路径。
export PATH="$PATH:./node_modules/.bin"
编辑:已经有一段时间了,但我已经改变了使用 npm 脚本的策略。在上述情况下,如下设置 package.json:
"scripts": {
"sails": "sails"
}
然后您可以使用它运行
npm run sails
或有论据
npm run sails -- <args>
您应该使用该npm bin
命令获取当前节点 bin 目录的绝对路径。
例如:
➤ 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]
这避免了相对路径的问题,特别是如果您要在构建系统中使用它,它将调用子目录中的命令。
更强大的是:
export PATH=$(npm bin):$PATH
您可以运行它,将其添加到您的 shell 配置文件中,或者创建一个别名,例如:
alias snpm='export PATH=$(npm bin):$PATH'
如果您确实使用别名路线,请务必使用单引号,这样会延迟变量的执行!
要在命令行上使用,sails generate foo
您需要全局安装 npm 模块。
npm install -g sails
如果您不想全局安装,也可以在命令中使用 bin 的路径:
./node_modules/sails/bin/sails.js generate foo
帆的官方说明(https://github.com/balderdashy/sails)建议
使用命令行工具安装最新的稳定版本:
sudo npm -g install sails
这会全局安装并添加到/usr/local/bin
应该在您的$PATH
.
但是,如果您在本地安装,要回答有关二进制文件位置的一般问题,它们应该放在./node_modules/.bin
目录中(所以运行./node_modules/.bin/sails ...
)
如果你不想为了运行一个非全局的 npm 脚本而弄乱你的 PATH——例如,你是唯一使用它的人——我个人建议使用 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
}
foo
然后我可以在目录中运行可执行文件.bin
:
nbin foo