Вывести все лицензии установленных библиотек node.js
Есть ли опция в npm (или другом инструменте) для печати всех используемых лицензий?
У меня есть проект, и я хочу убедиться, что я не использую библиотеку, которая находится под лицензией, которую я не могу использовать.
EDIT: выяснено, что многие разработчики не включают лицензию в package.json, поэтому мне пришлось вручную искать "npm docs package-name"
Ответы
Ответ 1
cd {project}/node_modules
ls | sed 's/$/\/package.json/' | xargs grep '"license[s]*"' -A 3
Можно использовать некоторое улучшение, но оно работает (по крайней мере, на osx, должно работать на Linux, не иметь понятия о Windows). Вы должны увидеть что-то вроде:
grunt/package.json: "licenses": [
grunt/package.json- {
grunt/package.json- "type": "MIT",
grunt/package.json- "url": "http://github.com/gruntjs/grunt/blob/master/LICENSE-MIT"
--
grunt-contrib-concat/package.json: "licenses": [
grunt-contrib-concat/package.json- {
grunt-contrib-concat/package.json- "type": "MIT",
grunt-contrib-concat/package.json- "url": "https://github.com/gruntjs/grunt-contrib-concat/blob/master/LICENSE-MIT"
--
Update:
Если вы хотите увидеть имя всех модулей, даже те, которые вложены в другие модули, следующие работы (cred to @robertklep, слегка измененные, чтобы по-прежнему работать в каталоге node_modules):
find * -name package.json | xargs grep '"license[s]*"' -A 3
Ответ 2
У меня было точно такое же требование, и я написал модуль node, чтобы сделать это. Беспокойное самоопределение, которое я знаю, но оно с открытым исходным кодом и надеется, что оно поможет решить вашу проблему. Сообщите мне, есть ли у вас какие-либо вопросы или предложения.
Разница по сравнению с другими ответами заключается в том, что она не просто использует объявление лицензии package.json, но ищет потенциальную информацию о лицензии в файлах лицензий и readme в проекте.
https://npmjs.org/package/nlf
Вы можете установить с помощью npm install -g nlf
Ответ 3
Сделав это только для большого проекта, могу сказать, что этот процесс - это скорее головная боль, чтобы автоматизировать полностью, чем вы думаете. Легко получить многие из них с некоторыми из трюков, перечисленных здесь, но лицензии на пакет NPM не публикуются последовательно и могут появляться
- В файле NPM package.json или
- В файле README (иногда просто имя, например "Лицензия MIT", а иногда и полный текст лицензии в разделе) или
- В отдельном файле LICENSE или COPYING.
Кроме того, вам иногда приходится читать лицензии, чтобы сообщить, какая известная лицензия с открытым исходным кодом соответствует.
Лучший инструмент, который я знаю для этого, что (в отличие от некоторых других ответов здесь) охватывает все эти случаи: пакет licensecheck:
https://github.com/marcello3d/node-licensecheck
Он смотрит на package.json, а также на обычные файлы лицензий, и соответствует ли соответствие сигнатур известным лицензиям, поэтому он автоматически распознает больше лицензий. Он также "нормализует" лицензии против стандартного списка лицензий SPDX (https://spdx.org/licenses/).
Наконец, Licensecheck также позволяет вам сохранять любые оставшиеся пакеты, необходимые для проверки вручную в вашем собственном файле license.json(поскольку вы не можете рассчитывать на внешний файл поддержки для изменения своего пакета).
Взятые вместе, это довольно надежное решение.
Ответ 4
Взгляните на license-report или license-checker
Ответ 5
Мне понравился этот вопрос, и он потратил время, чтобы написать nodejs script для него:
var npm = require('npm');
npm.load(process.config,function(err){
npm.list(function(err,deps){
var names = Object.keys(deps.dependencies);
for(var i in names){
var depen = deps.dependencies[names[i]];
console.log('Licenses for :',names[i]);
depen.licenses.forEach(function(license,i){
console.log('License #'+(i+1));
console.log('- Title:',license.type);
console.log('- Url:\t',license.url);
});
}
});
});
это выведет каждое имя лицензии и URL-адрес для каждого модуля,
ПРИМЕЧАНИЕ: должен быть выполнен в папке проекта, а npm должен быть установлен (npm install npm -g
звук переполнен, но это npm js lib)
Ответ 6
Вы можете попробовать это в системе на базе Linux:
npm list -g --depth=0 | awk '{print $2}' | xargs -i npm view {} | grep license
У вас будет что-то вроде этого:
license: 'MIT',
license: 'MIT',
license: 'MIT',
license: 'BSD',
license: 'MIT',
license: 'MIT',
license: 'BSD-2-Clause',
license: 'MIT',
.....................
.....................
.....................
license: 'BSD-2-Clause',
Ответ 7
Если вы используете Atom, npm-license-checker, чтобы получить лицензии от package.json
.
Ответ 8
У пряжи есть команда для этого, yarn licenses list
В моих целях следующая команда заставила меня достаточно близко:
yarn licenses list | grep License | grep -v 'MIT\|ISC\|WTFPL\|BSD\|Apache\|Unlicense\|CC-BY\|Public Domain'