JSON

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 для найденных пакетов, а не переносить список вручную.