在我正在处理的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?
答案 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
所有已安装软件包的版本及其依赖项。
npm list
使用-g
(全局)标志列出所有全局安装的软件包。使用--depth=0
标志仅列出顶级软件包,而不是它们的依赖项。
在您的情况下,您希望在脚本中运行它,因此您需要使用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