我正在尝试使用license-checker库来过滤和抛弃某些许可证类型。在README中,有一个如何使用一些意外字符查询JSON数据的示例:
var checker = require('license-checker');
checker.init({
start: '/path/to/start/looking'
}, function(json, err) {
if (err) {
//Handle error
} else {
//The sorted json data
}
});
但是,当我查看该JSON的格式时,我不确定如何将其作为评估许可证的一部分。以下是结构示例:
{ 'ansi-styles@1.1.0':
{ licenses: 'MIT',
repository: 'https://github.com/sindresorhus/ansi-styles' },
'ansi-styles@2.1.0':
{ licenses: 'MIT',
repository: 'git+https://github.com/chalk/ansi-styles',
licenseFile: '...' },
'ansi-wrap@0.1.0':
{ licenses: 'MIT',
repository: 'git+https://github.com/jonschlinkert/ansi-wrap',
licenseFile: '...' },
...
如何检查传入checker函数的json变量,以将licenses属性与许可证白名单数组进行比较?
答案 0 :(得分:1)
对象开头的转义序列\u001b[34m
看起来很像ANSI转义序列,用于告诉终端以彩色呈现内容。请参阅此示例:How to print color in console using System.out.println?。因此,当我尝试使用时,您的代码正确地转储了许可证JSON:
var checker = require('license-checker');
checker.init({ start: '.' }, function(json, err) {
if (err) {
//Handle error
} else {
console.log (JSON.stringify (json))
}
});
那么你将如何使用生成的JSON?任何对象上的Object.keys
将对象中的(必要的)不同键提取到数组中。然后,数组上的简单过滤器表达式将允许您捕获您感兴趣的内容。例如,如果您想保留所有MIT许可软件包,您可以这样做:
var keys = Object.keys (json)
var okPackages = keys.filter (function (e) {
return json.hasOwnProperty (e) && (json[e].licenses === "MIT")
});