Состав определяют по двум источникам: описанию зависимостей package.json, где перечислено, что просили поставить, и файлу блокировки версий — package-lock.json, yarn.lock или pnpm-lock.yaml, — который закрепляет точный набор, включая пакеты, подтянутые не напрямую, а через другие. В проектах на JavaScript таких косвенных зависимостей обычно в разы больше, чем прямых, поэтому без файла блокировки достоверного перечня не получится.
Найденное сопоставляют с условиями использования пакетов и с уведомлениями, вошедшими в поставку. Отдельно отмечают, попал ли какой-то пакет прямо в браузерную сборку и виден ли он посетителю. Если поставлен вопрос об уязвимостях, отмечают опубликованные записи для указанных версий — но запись об уязвимости пакета ещё не означает, что уязвимо само приложение.
Правовую оценку эксперт не даёт: соблюдены ли условия лицензии и какие последствия из этого следуют, определяет суд. Поэтому сохраните файл блокировки версий до того, как окружение переустановят.