打印所有安装的node.js模块的列表

在我正在使用的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? 

使用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' } 

如果您只对没有完整TREE的全球安装包感兴趣,那么:

npm -g ls --depth=0

或本地(省略-g):

npm ls --depth=0

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

  npm -g ls 

在任何操作系统

 npm -g list 

这就是它

一般来说,有两种方式可以列出已安装的软件包 – 通过命令行界面( CLI )或使用API的应用程序。

这两个命令都会打印出来,以树状结构stdout所有版本的软件包以及它们的依赖关系。


CLI

 npm list 

使用-g (全局)标志列出所有全局安装的软件包。 使用--depth=0标志只列出顶层包而不是它们的依赖关系。


API

在你的情况下,你想在你的脚本中运行这个,所以你需要使用API​​。 从文档:

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

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

 for package in `sudo npm -g ls --depth=0 --parseable`; do printf "${package##*/}\n"; done 

为什么不从package.json dependencies抓取它们?

当然,这只会给你你真正保存的那些,但是你仍然应该这样做。

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