npm v12 стал GA: npm install теперь просит разрешение на запуск кода
npm v12 получил тег latest. allowScripts по умолчанию выключен, а --allow-git и --allow-remote установлены в none. Lifecycle scripts и неявная сборка node-gyp требуют явного разрешения.
Что изменилось
npm v12 получил тег latest. allowScripts по умолчанию выключен, а --allow-git и --allow-remote установлены в none. Lifecycle scripts и неявная сборка node-gyp требуют явного разрешения.
Явная политика
Запустите npm approve-scripts --allow-scripts-pending, проверьте каждый пакет и разрешите только необходимые scripts. Политику allowScripts нужно хранить в package.json и ревьюить.
Влияние на CI
В первую очередь тестируйте native addons, Git dependencies, remote tarballs, workspaces и cold install без кеша. Старый binary cache может скрыть отсутствие разрешения.
Безопасная публикация
Для публикации замените долгоживущие tokens на OIDC trusted publishing. npm stage publish добавляет человеческое 2FA-подтверждение для критичных пакетов.
Чек-лист npm v12
✓Проверить pending scripts.
✓Закрепить разрешения за версиями.
✓Запустить cold install в CI.
✓Перейти на OIDC или staging.
Источники
- GitHub Changelog: npm install-time security and GAT bypass2fa deprecation
- GitHub Changelog: Upcoming breaking changes for npm v12
- npm Docs: npm approve-scripts
- npm Docs: npm deny-scripts
- npm Docs: Staged publishing for npm packages
- npm Docs: Trusted publishing for npm packages
- Reddit r/javascript: Upcoming breaking changes for npm v12