npm v12 Postinstall Impact Scanner
Найти в package.json/package-lock.json пакеты с install-скриптами, которые сломаются под npm v12 без allowScripts.
Как это работает
Прежде чем вручную выяснять, какие из полусотни зависимостей проекта действительно используют install-скрипты и сломаются под npm v12, разумнее один раз это проверить автоматически. npm v12 Postinstall Impact Scanner online берёт содержимое package.json (и опционально package-lock.json) и сверяет список зависимостей с известным набором пакетов, которые исторически используют install-скрипты для нативной сборки или пост-обработки.
В список известных проблемных пакетов входят самые частые кандидаты из реальной практики: sharp и canvas (нативная обработка изображений), bcrypt (нативное хеширование), sqlite3, fsevents (нативный файловый вотчер macOS), bufferutil, и любые пакеты, где присутствует node-gyp сборка через binding.gyp — все они молча перестанут собираться под npm v12 без явного allowlist.
Инструмент не просто перечисляет совпадения, а сразу выдаёт результат в формате, готовом для вставки в allowScripts — минимизируя ручной шаг между обнаружением проблемы и её решением, что особенно ценно при миграции проекта с полусотней зависимостей, где вручную вычитывать каждую было бы долго.
Частые вопросы
Проверяет ли сканер реальное содержимое install-скрипта на вредоносность?
Нет, это не антивирус и не сканер безопасности, инструмент лишь определяет, какие зависимости в принципе используют install-скрипты и потому потенциально пострадают от блокировки npm v12 по умолчанию, а не оценивает, безопасен ли конкретный скрипт.
Что если в проекте используется зависимость не из списка известных проблемных пакетов?
Список основан на самых распространённых нативных и постобрабатывающих пакетах, но не является исчерпывающим, для полной уверенности стоит также свериться с реальным выводом npm install в режиме advisory на версии 11.16.0, которая уже показывает предупреждения заранее.
Нужно ли сканировать package-lock.json, если есть package.json?
package.json показывает только прямые зависимости, а транзитивные зависимости с install-скриптами (например, зависимость вашей зависимости) видны только в package-lock.json, для полной картины лучше проверить оба файла.
Что делать с результатом сканирования дальше?
Результат удобно скопировать прямо в поле ввода package.json allowScripts Generator, чтобы сразу получить готовый блок allowScripts для найденных пакетов, а не переносить список вручную.