npm v12 est GA : npm install demande désormais l'autorisation d'exécuter du code
npm v12 est désormais marqué latest. allowScripts est désactivé par défaut, et --allow-git comme --allow-remote valent none. Les scripts lifecycle et les builds implicites node-gyp exigent donc une autorisation.
Ce qui change
npm v12 est désormais marqué latest. allowScripts est désactivé par défaut, et --allow-git comme --allow-remote valent none. Les scripts lifecycle et les builds implicites node-gyp exigent donc une autorisation.
Une policy explicite
Lancez npm approve-scripts --allow-scripts-pending, examinez chaque package et n'approuvez que les scripts justifiés. Versionnez la policy allowScripts dans package.json avec une revue renforcée.
Impact CI
Testez en priorité les modules natifs, dépendances Git, tarballs distants, workspaces et installations à froid. Un cache de binaire peut masquer une policy incomplète.
Publier en sécurité
Pour publier, remplacez les tokens d'écriture durables par OIDC trusted publishing. npm stage publish permet d'ajouter une validation humaine avec 2FA pour les packages sensibles.
Checklist npm v12
✓Inventorier les scripts en attente.
✓Épingler les autorisations par version.
✓Tester des installations CI sans cache.
✓Migrer vers OIDC ou staged publishing.
Sources
- 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