【问题标题】:Why can I run globally installed node modules by name?为什么我可以按名称运行全局安装的节点模块?
【发布时间】:2017-01-23 06:45:57
【问题描述】:

我全局安装了一个节点模块,比如说grunt 模块。我通过以下方式安装它:

npm install -g grunt

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

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

顺便说一句,我使用的是 Windows。我通过 .msi 安装程序安装 NodeJS。

【问题讨论】:

    标签: node.js node-modules


    【解决方案1】:

    您并没有真正从命令整体运行grunt 包。

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

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

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

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

    【讨论】:

    • 我看到了,%APPDATA%\npm中有一个grunt.cmd,已经添加到系统路径中了。所以当我在命令行输入grunt时,这个批处理文件就会被调用。
    猜你喜欢
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 2020-03-10
    • 1970-01-01
    相关资源
    最近更新 更多