
2026/06/10 6:01
NPM バージョン 12 で導入される予定のbreaking changes
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
npm v12 開始(推定リリースは 2026 年 7 月)、
npm install に対してより厳格なセキュリティデフォルトが適用されます。最も重要な変更は、自動スクリプト実行の無効化です(allowScripts がデフォルトでオフ)。明示的に承認されないと、preinstall、install、postinstall スクリプト(node-gyp を介するネイティブビルドを含む)がブロックされます。準備のためには、これらの変更を警告付きで利用可能な npm v11.16.0+(またはそれ以降)を使用してください:npm approve-scripts --allow-scripts-pending を実行し、信頼できるパッケージについては npm approve-scripts で明示的に承認し、他は npm deny-scripts で拒否します。結果となる許可リストは package.json に書き込まれコミットすべきであり、v12 へのアップグレード後は承認されたスクリプトのみが実行されます。
さらに、デフォルトでは
--allow-git(npm 11.10.0+ で利用可能)は none に解決され、Git ベースの依存関係に対して明示的なフラグが必要となり、.npmrc オーバーライドを介した潜在的なコード実行経路を閉じます。同様に、--allow-remote(npm 11.15.0+ で利用可能)はリモート URL から依存関係を解決する場合にデフォルトで none に設定されます。--allow-file および --allow-directory は現在のデフォルトを維持します。保守担当者および CI/CD パイプラインは依存関係を検証し、package.json 内の許可リストを更新し、アップグレード前に変更をコミットする必要があります。そうでない場合、手動の例外を設定しない限りビルド失敗となります。詳細は npm ドキュメントの npm approve-scripts、npm deny-scripts、および allow-scripts config をご参照ください。本文
npm 12 のセキュリティ機能強化に伴うデフォルト動作の変更と準備手順
npm 12(次期主要バージョン)で導入される新たなセキュリティ機能により、「npm install」のデフォルト動作に重大な変更が予定されています。これらの対策は、現在の npm 11.16.0 以降で警告表示されつつあり、アップデート前の対応が可能になっています。
- リリース時期: 概算で 2026 年 7 月
- 現状: npm 11.16.0+ で警告メッセージを確認可能
- 目的: 「自動実行」から「明示的許可」への転換によるセキュリティ強化
変更点の概要
以下の機能は、現在自動的に実行されていた動作を、明示的に許可する必要があるものへと変更されます。
1. スクリプト実行の制限(allowScripts
)
allowScripts- 変化:
のデフォルトが「オフ」になります。allowScripts - 影響:
- 依存パッケージ内のスクリプト(
,preinstall
,install
)の実行が行われません。postinstall - ネイティブビルドを要するパッケージ(
の構築など、node-gyp
を持つ場合)もブロックされます。binding.gyp
,git
,file
ソースからの依存関係に含まれるlink
スクリプトもブロックされます。prepare
- 依存パッケージ内のスクリプト(
- 対策方法:
# 対象パッケージの確認と白名簿作成 npm approve-scripts --allow-scripts-pending # 信頼するパッケージを許可 npm approve-scripts <package_name> # 残りのパッケージをブロック(必要に応じて) npm deny-scripts <package_name> - 注意: 生成された白名簿は必ず
に書き込み、コミットしてください。npm 11.16.0+ を使用している場合、警告メッセージで該当スクリプトを実行中のルーチンを特定できます。package.json
2. Git リポジトリの扱い(--allow-git
)
--allow-git- 変化:
のデフォルトが「なし」になります。--allow-git - 影響:
- 明示的に指定しない限り、Git デプロイメント(直接および依存先)は解決されません。
ファイルによる Git 実行ファイルの上書きによるコード実行経路を防ぎます。.npmrc
- 対応フラグ:
を明示的に追加することで利用可能。--allow-git - 利用バージョン: npm 11.10.0+(以前に発表済み)。
3. リモート URL の扱い(--allow-remote
)
--allow-remote- 変化:
のデフォルトが「なし」になります。--allow-remote - 影響:
- HTTPS アーカイブ(tarball)などのリモート URL から依存関係を解決しないようになります(直接および依存先)。
- 対応フラグ:
を明示的に追加することで利用可能。--allow-remote - 利用バージョン: npm 11.15.0+。
- 補足:
および--allow-file
フラグについては、v12 でもデフォルト値に変更はありません。--allow-directory
準備と移行手順
セキュリティリスクを回避し、円滑に移行するためのアクションプランです。
-
アップデートの確認
- npm を 11.16.0 以降 にアップデートしてください。
- 通常通りインストールを実行し、表示される警告メッセージを確認します。
-
スクリプトの白名簿作成
# 必要なスクリプトを特定 npm approve-scripts --allow-scripts-pending- 警告で表示されたパッケージの中から、本当に信頼できるものだけを許可リストへ追加します。
- 不要なスクリプトはブロックするか、そのまま無効化してください。
-
設定のコミット
- 更新された
(白名簿情報を含む)を必ず Git リポジトリにコミットしてください。package.json
- 更新された
-
アップグレード後の動作
- npm 12 アップグレード後、許可されたスクリプトのみが実行され、許可されていないものはすべて停止します。
- 必要な場合はインストールコマンドにフラグを明示的に追加する必要があることを忘れずに:
# 例:Git やリモート URL の使用が必要なら npm install --allow-git --allow-remote
詳細情報とサポート
- 公式ドキュメント:
npm approve-scriptsnpm deny-scripts
構成項目の設定方法allow-scripts
またはグローバルインストールへの対応も含まれます。npx
- コミュニティ: 具体的なご意見やご質問については、npm の公式コミュニティディスカッションでご相談ください。