Подтвердить что ты не робот

Вывести все лицензии установленных библиотек node.js

Есть ли опция в npm (или другом инструменте) для печати всех используемых лицензий? У меня есть проект, и я хочу убедиться, что я не использую библиотеку, которая находится под лицензией, которую я не могу использовать.

EDIT: выяснено, что многие разработчики не включают лицензию в package.json, поэтому мне пришлось вручную искать "npm docs package-name"

4b9b3361

Ответ 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(поскольку вы не можете рассчитывать на внешний файл поддержки для изменения своего пакета).

Взятые вместе, это довольно надежное решение.

Ответ 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'