145

在我正在处理的 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?
4

8 回答 8

280

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

npm -g ls --depth=0

或本地(省略 -g):

npm ls --depth=0

于 2014-10-11T08:06:43.973 回答
106

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

从脚本:

测试.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' }
于 2012-12-21T00:05:58.910 回答
50

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

 npm -g ls
于 2014-09-12T14:34:16.463 回答
28

在任何操作系统中

npm -g list

就是这样

于 2016-04-17T13:59:15.163 回答
12

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

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


命令行界面

npm list

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


API

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

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

除了打印到stdout,数据也将被传递到回调中。

于 2015-04-03T07:52:12.660 回答
6

为什么不从里面抓住它们dependenciespackage.json

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

console.log(Object.keys(require('./package.json').dependencies));
于 2016-05-14T23:38:23.660 回答
3
for package in `sudo npm -g ls --depth=0 --parseable`; do
    printf "${package##*/}\n";
done
于 2014-10-21T22:59:18.897 回答
0

到 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 install@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 

附加命令

文档

于 2021-12-06T09:36:09.660 回答