TL; DR Есть разные способы достижения необходимых результатов. Как уже отмечалось, самый быстрый и простой способ (благодаря новым функциям npm с тех пор, как я написал это сообщение в блоге):

npx license-checker --summary

Разработку программного обеспечения, особенно с использованием JavaScript, очень легко начать благодаря npm и быстрому способу установки пакетов. Благодаря EU- GDPR и внутренним обсуждениям мне было любопытно, какие лицензии я использую, а также есть ли какие-то конфликты (несовместимые с MIT). Вот мое первое пошаговое руководство, как вы можете

а) Проверьте, сколько пакетов у вас в папке node-modules

б) какие уникальные лицензии вы используете и есть ли конфликты.

Я использую здесь пример проекта, использующего в основном Preact (через Preact-CLI). Также есть замечательный инструмент проверка лицензий, который уже делает за нас весь основной анализ. Поэтому в первую очередь рекомендую установить лицензионный чекер.

npm i -g license-checker

Сколько пакетов мы используем?

Прежде всего, я хочу увидеть, сколько пакетов у меня в папке node-modules. Для этого я создаю файл со всеми лицензиями, найденными в наших нод-модулях, в папке моего проекта:

license-checker > licenses.txt

Есть разные способы проверить, сколько библиотек / узловых модулей мы используем активно (или пассивно), в этом случае мы можем просто использовать grep

grep ‘licenses:' licenses.txt | wc -l

Благодаря мощности терминала Unix в этом случае (Mac OS X) мы можем использовать grep для перехвата определенной строки из текстового файла, а затем использовать оператор конвейера | для конвейерного вывода вывода в команду wc (количество слов). С аргументом -l мы подсчитываем только строки, предоставленные нашей командой grep. В моем случае результат показал мне 1271 пакет.

Как мы получаем все уникальные лицензии?

Поскольку теперь мы знакомы с grep и оператором конвейера, его удобно использовать также для создания уникального набора используемых нами лицензий.

grep ‘licenses:' licenses.txt | sort -u

С помощью команды sort мы можем легко сортировать строки текстовых файлов, в этом случае с аргументом -u мы получаем только уникальные строки текстового файла. В результате должен получиться следующий вывод Терминала:

В конце у нас есть список из 25 уникальных записей. Как вы уже можете видеть, некоторые из них уникальны, некоторые - такие же, но с разным написанием, например, Apache-2.0 и Apache License, версия 2.0.

Основываясь на этом, мы можем провести хорошее сравнение, если наш собственный проект, использующий MIT, имеет зависимости от других библиотек, которые могут быть несовместимы.

Как разработчики, мы часто используем библиотеки, не вдаваясь в подробности лицензий используемых библиотек и фреймворков, а с помощью библиотеки проверки лицензий и одной команды терминала мы можем сузить их до нескольких.

Благодаря существующим инструментам у разработчиков не должно быть никаких оправданий, если они не пройдут базовую проверку использованных лицензий.

PS. вы можете проверить все с помощью одной команды:

license-checker | grep ‘licenses:' | sort -u

PPS.license-checker --summary создает аналогичный обзор, которого может быть уже достаточно 😀