Node.js npm安装和npm列表的-g选项有什么作用?

Node.js npm安装和npm列表的-g选项有什么作用?,node.js,macos,npm,Node.js,Macos,Npm,Node.jsnpm(节点包管理器)有一个-g命令行参数,我经常看到它被引用。例如,的文档说明使用npm install-g azure cli安装它 问题:-g选项有什么作用?Node.js包可以通过以下两种方式之一安装: 全球 局部 -g选项指示npm全局安装软件包。如果您希望能够直接从终端调用命令,则可以全局安装Node.js包 发件人: 安装npm软件包有两种方法:本地安装或全局安装。您可以根据使用软件包的方式选择要使用的安装类型 如果您想将它用作命令行工具,比如grunt CLI,

Node.js
npm
(节点包管理器)有一个
-g
命令行参数,我经常看到它被引用。例如,的文档说明使用
npm install-g azure cli安装它


问题:
-g
选项有什么作用?

Node.js包可以通过以下两种方式之一安装:

  • 全球
  • 局部
-g
选项指示
npm
全局安装软件包。如果您希望能够直接从终端调用命令,则可以全局安装Node.js包

发件人:

安装npm软件包有两种方法:本地安装或全局安装。您可以根据使用软件包的方式选择要使用的安装类型

如果您想将它用作命令行工具,比如grunt CLI,那么您可以全局安装它。另一方面,如果您希望使用Node's require之类的东西依赖于来自您自己模块的包,那么您希望在本地安装

要全局下载软件包,只需使用命令npm install-g,例如:

安装节点模块需要哪些选项? 写完这篇文章后,我很快发现了艾萨克的作品,而且很老,但仍然是他的作品(是的,npm@isaacs)。但我仍然认为下面的帖子是信息性的。

您可以安装
npm
模块
全局
本地
-您已经知道了,但为什么

  • 全局:
    npm安装-g some-module-a
    :此模块旨在用作可执行文件(即CLI、文件监视程序、代码缩小程序、记录器等)
  • 本地:
    npm安装some-module-b
    :要通过导入导入导入并在应用程序中使用,
    var someModule=require('some-module)
  • global
    模块是
    npm
    的最佳理念之一。我们可以使用
    节点/javascript
    轻松创建可执行文件。如果您的节点应用程序打算作为可执行文件运行,那么您将希望其他人在全局范围内安装它。如果它是一个实用程序、助手、应用程序等,那么您通常不希望在全局范围内安装它。因此,除非模块明确说明您应该使用
    -g
    安装它,否则不要安装

    再一次:如果你想在你的节点应用程序中使用名为
    some module
    的模块-
    var someModule=require('some-module')
    ,那么
    npm从你的节点应用程序的根目录安装一些模块
    ,将其拉入你的本地
    节点模块
    目录。如果您在全局而非本地安装了某个模块,则通常不会加载该模块,并且会显示未找到该模块的错误(即使可以加载全局模块-提示:)

    那么,当您在全球范围内安装
    时,会发生什么情况呢?
    
    npm install-g[some module]
    将指定的节点模块安装在文件系统中较高的目录中(即在unix系统中通常为
    /usr/local/lib/node_modules
    )。全局模块的最大用例是使用node编写的
    CLI
    s(想想
    npm
    bower
    gulp
    grunt
    ,等等)

    让我们看看在全局安装
    bower
    时会发生什么:
    *在命令行/终端中执行以下步骤

    步骤
    npm安装-g bower

    说明:该模块(其所有文件和依赖项)保存在您的全局目录中(例如/usr/local/lib/node_modules/bower)

    这里发生了别的事。现在您可以在命令行中运行
    bower
    。太棒了

    步骤
    bower-v
    -->生成已安装的bower版本(即
    1.6.5

    解释:它现在是一个完全可执行的节点应用程序,使用
    bower
    作为关键字。在
    bower
    的文件中,您会发现一个
    bin
    属性:

    "bin": {
        "bower": "bin/bower"
    }
    
    那么这一切是如何运作的呢?
    npm
    将从大多数可执行文件所在的位置创建一个节点,
    /usr/local/bin/bower
    切换到模块所在的位置
    /usr/local/lib/node\u modules/bower/bin/bower
    。该符号链接使得当可执行文件运行时,它可以引用原始模块中的其他文件,包括它的本地
    node\u模块
    。很酷吧

    *关于可执行文件的注意事项:如果您在
    /usr/local/bin/
    chmod u+x
    (用户+可执行文件)中创建一个名为
    awesomeness
    的文件,请将其删除。然后在其中编写一些脚本(在本例中,javascript使用顶部的
    #!/usr/bin/env node
    )。然后,只需键入
    awesomeness
    ,就可以在命令行/终端的任何位置运行它


    希望这有帮助。我知道对它进行更深入的研究在早期对我有所帮助。

    应该注意的是,在本地安装可执行文件也很好,请参见
    eslint
    browserify
    grunt cli
    xo
    ,等等,或者你只是不确定你是否想在第一个地方执行-然后你可以安装它在本地,并尝试。