NPM:如何使用.node_modules.bin文件夹?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NPM:如何使用.node_modules.bin文件夹?相关的知识,希望对你有一定的参考价值。
我在安装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
命令来获取当前node 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
sails的官方说明 (https:/github.combalderdashysails。)建议
用命令行工具安装最新的稳定版。
sudo npm -g install sails
这将在全球范围内安装,并添加到一个目录,如 /usr/local/bin
该在你 $PATH
.
但为了回答关于二进制文件位置的一般问题,如果你在本地安装,它们应该放置在 ./node_modules/.bin
目录(所以运行 ./node_modules/.bin/sails ...
)
如果你不喜欢因为运行一个非全局的npm脚本而弄乱你的PATH--比如你是唯一一个使用它的人--我个人建议使用sh "alias"。
npm 安装(本地)你心爱的包(比如这里的 json-diff)。
cd ~ && npm install json-diff
将其别名为(保存在你的 ~.xxxxrc 文件中)。
alias diffj "`npm bin`/json-diff !*"
然后,对于两个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
在NPM 5.2+中,可能的变通方法是使用 npx
命令。
npx sails new test-project
见 这个 问题的类似用例和优雅的解决方案。
以上是关于NPM:如何使用.node_modules.bin文件夹?的主要内容,如果未能解决你的问题,请参考以下文章
Yarn 2:如何从 `node_modules/.bin` 目录运行脚本?
错误 npm failed with exit code 2 错误:命令失败:node_modules/.bin/vsce package --no-yarn