2017-03-17 66 views
0

我们有一个NPM项目X.我想获得项目中所有依赖项以及他们所需的最小Node.js(引擎)版本的清单。获取所有NPM依赖项的列表最小值node.js引擎版本

我该怎么做?

当然,动机是发现我们需要在开发和生产中运行的最低Nodejs版本。

npm ls | grep "engines" 

类似的东西,除了上面的都不行,希望有一些更强大的

+0

我不知道是什么你的意思是“它们需要的最小Node.js(引擎)版本。” AFAIK无法派生或计算依赖关系的最小必需Node版本。软件包作者必须在他们的项目中指定引擎版本,并不是所有的作者都会这样做。 – LINKIWI

+0

对,但是对于所有package.json文件,其中engines.node *是*的定义,我想收集信息 –

+1

NPM没有内置cmd,这将有助于AFAIK。您可以编写一个节点脚本来遍历node_packages目录,解析所有package.json的json并搜索引擎值,返回最小的引擎。 – magreenberg

回答

0

我能做到这一点,像这样:

let npm = require('npm'); 

npm.load({}, function(err, npm) { 

    if(err) throw err; 

    npm.config.set('global', false); // => we don't want to consider global deps 

    npm.commands.list([], true, function(err, pkgInfo) { 

    let enginesList = Object.keys(pkgInfo.dependencies).map(function(k){ 
     return { 
      dep: k, 
      engines: pkgInfo.dependencies[k].engines || {} 
     } 
    }); 

    enginesList.forEach(function(val){ 
     console.log(val.dep + ' => ', val.engines); 
    }); 

    }); 

}); 
相关问题