我有一个小型Node模块,其中包含bin
目录中的命令行脚本。
"bin": {
"generate": "./bin/generate.js"
}
generate.js
脚本可以正常执行。
如果我运行npm install -g
,这一切都正常。但是我不想全局安装,只能在模块文件夹中使用命令generate
。如果我从模块文件夹运行npm install
,它会在node_modules
子目录中正确安装所有依赖项。但是,命令中的generate
就像给了我“没有这样的文件或目录”。
THX。
答案 0 :(得分:11)
我从不使用-g
安装节点模块。我的解决方案是将此问题添加到我的$PATH
# add this to ~/.bashrc, ~/.zshrc, or ~/.profile, etc
export PATH="./node_modules/.bin:$PATH"
现在,只要您在模块的根目录中,就可以访问已作为模块安装的任何二进制文件。
例如,less
通常与
npm install -g less
但是,如果您按上述方法修改了PATH,则可能会出现类似
的内容cd my_node_module
npm install --save less
lessc less/style.less css/style.css
如果没有PATH修改,你会看到
command not found: lessc
如果您不想改变PATH,可以直接访问二进制文件
cd my_node_module
npm install --save lessc
./node_modules/.bin/lessc a.less a.css
是的,不再是npm install -g ...