概要
- npm v12で セキュリティ強化 のためのデフォルト変更
- スクリプト自動実行やGit/リモート依存解決 が明示的な許可制に
- これらの変更はnpm 11.16.0以降で 警告として事前確認可能
- 2026年7月リリース予定
- 移行準備の具体的な手順案内あり
npm v12におけるセキュリティ関連のデフォルト変更
-
allowScriptsデフォルトOFF化
- npm install実行時、 依存パッケージのpreinstall/install/postinstallスクリプトが自動実行されなくなる
- 明示的に許可した場合のみスクリプト実行
- native node-gypビルドもブロック対象 (binding.gypのみ存在し、installスクリプト明示なしでも)
- git/file/link依存の prepareスクリプトも同様にブロック
- ブロック対象スクリプトの確認
npm approve-scripts --allow-scripts-pendingコマンドでリストアップ- 信頼できるパッケージのみ
npm approve-scriptsで許可 - その他は
npm deny-scriptsで明示的に拒否 - 許可リストは package.jsonに保存・コミット 推奨
- npm 11.16.0以降では 警告表示で事前確認可能
-
--allow-gitデフォルトnone化
- Git依存(直接・間接問わず)は 明示的に--allow-git指定時のみ解決
- Git依存の.npmrcによるGit実行ファイル上書き等の コード実行経路を遮断
- 2026-02-18に事前告知済み、npm 11.10.0+で利用可能
-
--allow-remoteデフォルトnone化
- https tarball等リモートURLからの依存解決も --allow-remote明示時のみ許可
- npm 11.15.0+で利用可能
- 関連する--allow-file, --allow-directoryは デフォルト変更なし
移行準備方法
-
npm 11.16.0以上へアップグレード 推奨
-
通常通り
npm install実行し、 警告内容を確認 -
npm approve-scripts --allow-scripts-pendingで スクリプト実行対象パッケージの洗い出し -
信頼できるパッケージのみ approve・コミット、その他はdeny
-
アップグレード後は 許可したスクリプトのみ実行継続、未許可分は停止
- 詳細は 公式ドキュメント (npm approve-scripts、npm deny-scripts、allow-scripts config)参照
- 質問や意見は npmコミュニティディスカッション で受付
まとめ
- npm v12は セキュリティ重視 の大幅変更
- 既存プロジェクトは 事前準備・許可リスト運用 が必須
- 2026年7月までに 対応推奨