在没有全局安装的情况下可以在Node模块中包含一个命令行?
我有一个小的Node模块,在bin
目录中包含一个命令行脚本。
"bin": { "generate": "./bin/generate.js" }
generate.js
脚本可以正确执行。
这一切工作正常,如果我运行npm install -g
。 但我不想全局安装,只有命令generate
模块文件夹内的工作。 如果我从模块文件夹运行npm install
,它会正确安装node_modules
子目录中的所有依赖node_modules
。 但是,然后从命令generate
像给我“没有这样的文件或目录”。
谢谢。
我从来不使用-g
安装节点模块。 我的问题的解决scheme是将此添加到我的$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 ...