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

时间:2012-12-20 23:04:35

标签: 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?

7 个答案:

答案 0 :(得分:240)

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

npm -g ls --depth=0

或本地(省略-g):

npm ls --depth=0

答案 1 :(得分:97)

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

答案 2 :(得分:49)

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

 npm -g ls

答案 3 :(得分:24)

在任何操作系统中

npm -g list

就是这样

答案 4 :(得分:7)

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

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


CLI

npm list

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


API

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

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

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

答案 5 :(得分:5)

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

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

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

答案 6 :(得分:3)

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