我在npm安装时遇到问题
我创建了一个项目说项目A
cd ~/projectA
npm install sails
但安装后找不到sails命令。
我知道它已成功安装在~/projectA/node_modules
目录中。
但无法获取可执行文件。我知道它已安装~/projectA/node_modules/.bin
每当我进入这个projectA文件夹时,如何自动获取.bin?
我做错了吗?
答案 0 :(得分:15)
我可以给你一个不雅的解决方案,这对我有用。我只是在.bashrc文件中导出了我的路径。
export PATH="$PATH:./node_modules/.bin"
编辑:已经有一段时间了,但我改变了我的策略,改为使用npm脚本。在上面的例子中,设置package.json如下:
"scripts": {
"sails": "sails"
}
然后您可以使用
运行npm run sails
或带参数
npm run sails -- <args>
答案 1 :(得分:12)
您应该使用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]
这可以避免相对路径的问题,特别是如果您要在将在子目录中调用命令的构建系统中使用它。
答案 2 :(得分:2)
更强大的是:
export PATH=$(npm bin):$PATH
您可以运行它,将其添加到您的shell配置文件中,也可以创建一个别名,如:
alias snpm='export PATH=$(npm bin):$PATH'
如果你去别名路线,一定要使用单引号,这样就会延迟执行变量!
答案 3 :(得分:1)
要在sails generate foo
等命令行上使用,您需要全局安装npm模块。
npm install -g sails
如果您不想全局安装,也可以使用命令中bin的路径:
./node_modules/sails/bin/sails.js generate foo
答案 4 :(得分:1)
帆的官方说明(https://github.com/balderdashy/sails)建议
使用命令行工具安装最新的稳定版本:
sudo npm -g install sails
这将全局安装,并添加到/usr/local/bin
中应该位于$PATH
的目录中。
但是要回答关于二进制文件在本地安装时的位置的一般问题,应将它们放在./node_modules/.bin
目录中(这样运行./node_modules/.bin/sails ...
)
答案 5 :(得分:0)
如果您不想使用PATH来运行非全局的npm脚本 - 例如你是唯一一个使用它的人 - 我个人建议使用sh“alias”。
npm install(本地)你心爱的包(例如json-diff)
cd ~ && npm install json-diff
别名(将其保存在〜/ .xxxxrc文件中):
alias diffj "\`npm bin\`/json-diff !*"
然后,为了区分2个json:
diffj old.json new.json
答案 6 :(得分:0)
在我的~/.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
答案 7 :(得分:-1)
使用npx
命令在NPM 5.2+中可能的解决方法。
npx sails new test-project
有关类似的用例和简洁的解决方案,请参见http://localhost:4200/assets/contacts.json问题。