在没有全局安装的情况下可以在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 ...