打印所有安装的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));