tôi đang cố gắng người kiểm tra giấy phépThư viện để lọc và loại bỏ một số loại giấy phép nhất định. Trong readme, có một ví dụ về cách truy vấn dữ liệu JSON với một số ký tự không mong muốn:
var checker = require('license-checker');
checker.init({
bắt đầu: '/path/to/bắt đầu/tìm kiếm'
}, hàm(json, err) {
nếu (lỗi) {
//Xử lý lỗi
} khác {
//Dữ liệu json được sắp xếp
}
});
Tuy nhiên, khi nhìn vào định dạng của JSON đó, tôi không biết làm cách nào để trích xuất nó để đánh giá giấy phép. Đây là một ví dụ về cấu trúc:
{ 'ansi-styles@1.1.0':
{ giấy phép: 'MIT',
kho lưu trữ: 'https://github.com/sindresorhus/ansi-styles' },
'ansi-styles@2.1.0':
{ giấy phép: 'MIT',
kho lưu trữ: 'git+https://github.com/chalk/ansi-styles',
licenseFile: '...' },
'ansi-wrap@0.1.0':
{ giấy phép: 'MIT',
kho lưu trữ: 'git+https://github.com/jonschlinkert/ansi-wrap',
licenseFile: '...' },
...
Làm cách nào tôi có thể kiểm tra biến json được chuyển đến hàm kiểm tra để so sánh thuộc tính giấy phép với mảng danh sách trắng giấy phép?
Trình tự thoát ở đầu đối tượng\u001b[34m
Trông rất giống các chuỗi thoát ANSI được sử dụng để yêu cầu thiết bị đầu cuối hiển thị nội dung bằng màu sắc. Ví dụ:Làm cách nào để in màu trong bảng điều khiển bằng System.out.println? . Mã của bạn loại bỏ giấy phép JSON một cách chính xác khi tôi thử nó như thế này:
var checker = require('license-checker');
checker.init({ start: '.' }, function(json, err) {
nếu (lỗi) {
//Xử lý lỗi
} khác {
console.log (JSON.stringify (json))
}
});
Vậy bạn sẽ làm gì với JSON được tạo? trên bất kỳ đối tượng nào Đối tượng.keys
Sẽ trích xuất (nhất thiết) các khóa khác nhau trong đối tượng thành một mảng. Sau đó, một biểu thức lọc đơn giản trên mảng sẽ cho phép bạn nắm bắt bất cứ điều gì bạn quan tâm. Ví dụ: nếu bạn muốn giữ tất cả các gói được cấp phép của MIT, bạn có thể thực hiện việc này:
phím var = Phím đối tượng (json)
var okPackages = key.filter (function (e) {
trả về json.hasOwnProperty (e) && (json[e].licenses === "MIT")
});
Tôi là một lập trình viên xuất sắc, rất giỏi!