防止NodeJS npm在检索包时打印详细信息

使用节点npm模块( https://www.npmjs.org/api/npm.html ),我想检索一个包,但没有打印结果到控制台。 设置loglevel沉默似乎没有帮助。

var npm = require('npm'); npm.load(function (er, npm) { // use the npm object, now that it's loaded. npm.config.set('loglevel', 'silent'); npm.commands.view(["<package>@<version>"],function(err, npmBody) { //at this point it is always logging npmBody contents to console! }); }); 

这不能没有劫持stdout 。 请参阅: https : //github.com/npm/npm/blob/master/lib/install.js#L100

这是固定的一次,但后来恢复。 看来, npm不是被devise为以编程方式使用。

通过“劫持stdout ”我的意思是这样的:

 console.log('Begin'); console._stdout = { write : function () {} }; externalFn(); console._stdout = process.stdout; console.log('End'); function externalFn () { console.log('Annoying stuff'); }