【问题标题】:Print a list of all installed node.js modules打印所有已安装的 node.js 模块的列表
【发布时间】:2012-12-08 13:11:32
【问题描述】:

在我正在处理的 node.js 脚本中,我想将所有 node.js 模块(使用 npm 安装)打印到命令行。我该怎么做?

console.log(__filename);

//now I want to print all installed modules to the command line. How can I do this?

【问题讨论】:

标签: javascript node.js npm package dependencies


【解决方案1】:

如果您只对全局安装的软件包感兴趣而没有完整的树,那么:

npm -g ls --depth=0

或本地(省略-g):

npm ls --depth=0

【讨论】:

  • 我也喜欢指定 --l 或 --long,npm -g ls --depth=0 --long。这提供了模块描述和 github 链接。
  • 如果您喜欢 npm ls 完整示例,请查看:stackoverflow.com/questions/17937960/…
【解决方案2】:

使用npm ls(甚至还有json输出)

来自脚本:

test.js:

function npmls(cb) {
  require('child_process').exec('npm ls --json', function(err, stdout, stderr) {
    if (err) return cb(err)
    cb(null, JSON.parse(stdout));
  });
}
npmls(console.log);

运行:

> node test.js
null { name: 'x11', version: '0.0.11' }

【讨论】:

  • 另外,如何获取modules文件夹的文件路径?
  • 路径是 node_modules/[模块名称]。我相信这应该适用于所有平台。请注意,这种方式仅打印“本地”模块树,requre 首先查看 node_modules,然后查看 ../node_modules、../../node_modules(请参阅nodejs.org/api/…),然后查看 NODE_PATH env var
  • 尝试npm ls --parseable 获取路径列表
【解决方案3】:

所有全局安装的第三方模块列表,写入控制台:

 npm -g ls

【讨论】:

    【解决方案4】:

    在任何操作系统中

    npm -g list
    

    就是这样

    【讨论】:

    • 此命令将比npm -g ls --depth=0 花费更长的时间,因为它还会查找模块依赖项。
    【解决方案5】:

    通常,有两种方法可以列出已安装的软件包 - 通过命令行界面 (CLI) 或在您的应用程序中使用 API

    这两个命令都会以树形结构向stdout 打印已安装包的所有版本及其依赖项。


    命令行

    npm list
    

    使用-g(全局)标志列出所有全局安装的包。使用--depth=0 标志仅列出顶级包而不列出它们的依赖项。


    API

    在您的情况下,您希望在脚本中运行它,因此您需要使用 API。来自文档:

    npm.commands.ls(args, [silent,] callback)
    

    除了打印到stdout之外,数据也会传入回调中。

    【讨论】:

    • 感谢您指定 npm 具有可从应用程序访问的 API。你如何将参数传递给函数?我尝试了npm.commands.ls(["depth=0"], ... ),但它给了我错误,npm.commands.ls(["prod"], ... ) 给了我一个空数组....
    【解决方案6】:

    为什么不从dependencies 中的package.json 中获取它们?

    当然,这只会给你实际保存的那些,但无论如何你都应该这样做。

    console.log(Object.keys(require('./package.json').dependencies));
    

    【讨论】:

    • 这不会给你全局安装的包
    • 原始问题没有指定他们是否要包含全局安装的软件包。此答案为其他答案提供了一个有用的替代方案。
    【解决方案7】:
    for package in `sudo npm -g ls --depth=0 --parseable`; do
        printf "${package##*/}\n";
    done
    

    【讨论】:

    • 是的,我现在所有的 Bash 都有 $()
    【解决方案8】:

    截至 2021 年底,几乎没有什么明显的方法可以做到这一点,而上面的答案中唯一给出的部分是完整的列表。

    Node.js 文档实际上对此事进行了很好的解释,这是主要命令的集体列表。

    所有命令都将运行已安装模块的列表本地。为了运行全局级别只需在语句末尾添加-g 标志。

    1. 查看所有已安装 npm 包的版本,包括它们的依赖项

      ❯ npm list
      
       >>> /Users/joe/dev/node/cowsay
       └─┬ cowsay@1.3.1
         ├── get-stdin@5.0.1
         ├─┬ optimist@0.6.1
         │ ├── minimist@0.0.10
         │ └── wordwrap@0.0.3
         ├─┬ string-width@2.1.1
         │ ├── is-fullwidth-code-point@2.0.0
         │ └─┬ strip-ansi@4.0.0
         │   └── ansi-regex@3.0.0
         └── strip-eof@1.0.0
      
    2. 只获取您的顶级包

      npm list --depth=0
      
    3. 通过指定名称获取特定包的版本。

      npm list <package-name>
      
    4. 在 npm 存储库中查看该软件包的最新可用版本

      npm view <package-name> version
      
    5. 使用@语法安装旧版本的 npm 包

      npm 安装@ npm install cowsay@1.2.0

      全局包

      npm install -g webpack@4.16.4

    6. 列出软件包的所有先前版本

      npm view cowsay versions
      [ '1.0.0',
        '1.0.1',
        '1.0.2',
        '1.0.3',
        '1.1.0',
        '1.1.1',
        '1.1.2',
        '1.1.3',
        ....
      ]
      

    更新所有 Node.js 依赖项

    1. 安装新的次要版本或补丁版本

       npm update
      
    2. 安装新的次要版本或补丁版本但不更新 package.json

       npm update --no-save
      
    3. 为了发现软件包的新版本,这会为您提供一个存储库中的一些过时软件包的列表,这些软件包已经有一段时间没有更新了

        npm outdated
      

    其中一些更新是主要版本。运行 npm update 不会更新这些版本。主要版本永远不会以这种方式更新,因为它们(根据定义)引入了重大更改,而 npm 想为您省去麻烦。

    要将所有包更新到新的主要版本,请全局安装 npm-check-updates 包:

    npm install -g npm-check-updates
    ncu -u
    

    这会将 package.json 文件中的所有版本提示升级为依赖项和 devDependencies,因此 npm 可以安装新的主要版本


    开发依赖

    安装在开发依赖项中。

    npm install <package-name> -D
    npm install <package-name> --save-dev # same as above
    

    避免在生产环境中安装这些开发依赖项

    npm install --production
    

    卸载 npm 包

    npm uninstall <package-name>
    npm uninstall -g <package-name> # globally uninstall
    
    1. 卸载一个包并**删除package.json中的引用**

        npm uninstall <package-name> -S
        npm uninstall <package-name> --save # same as above
      

    一些带有全局标志的命令示例。

    npm list -g 
    npm list --depth=0 -g
    npm list <package-name> -g 
    npm view <package-name> version -g 
    

    附加命令

    文档

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      • 1970-01-01
      • 2010-09-12
      • 2015-06-27
      • 2012-11-09
      相关资源
      最近更新 更多