为什么我可以按名称运行全局安装的节点模块?

时间:2017-01-23 06:45:58

标签: node.js node-modules

我在全局安装了一个节点模块,让我们说grunt模块。我安装它:

npm install -g grunt

已安装在%APPDATA%\npm\node_modules\grunt

然后我可以在命令行中运行它,比如grunt --version。这是怎么发生的?我的意思是,为什么我可以直接使用grunt作为命令?

顺便说一下,我正在使用Windows。我通过.msi安装程序安装NodeJS。

1 个答案:

答案 0 :(得分:2)

你并没有真正从命令中运行grunt包。

此设置从grunt's package.json开始。在那,它的specified a bin script与包名称相同。

"bin": {
  "grunt": "bin/grunt"
},

当您install the package globally时,npm为每个bin脚本添加一个可执行文件(每个包可以有多个)到系统路径中的目录,允许命令行查找键入命令时它们。

当您运行grunt时,它是从安装它的目录运行node bin/grunt的快捷方式,传递您在其后提供的任何参数。