node_modules
別名: node modules / node_modules ディレクトリ
npm などが依存パッケージをインストールするディレクトリ。Node.js はモジュール解決時に親へ遡りながら node_modules を探索する。通常 Git 管理しない。
#nodejs#npm#node-modules#dependency#module-resolution
公開:
定義
node_modules は、npm / yarn / pnpm が package.json の依存パッケージをインストールするディレクトリ。require() や import でパッケージ名(/ や ./ で始まらない指定)を解決するとき、Node.js は現在のディレクトリから親へ遡りながら各階層の node_modules を探索する。
詳細
依存はネストして展開され、ツール(npm v7 以降は基本フラット)により配置が変わる。
膨大なファイル数になるため .gitignore に追加してコミットしないのが原則で、再現は lockfile と npm install で行う。
Docker では node_modules をボリュームやキャッシュの扱いで壊しやすく、ビルド時の COPY 対象からも外すことが多い。
よくある誤解
- commit すべき: 通常は不要。
lockfile があれば同じ依存を再現でき、リポジトリも軽く保てる。 - 手で編集してよい: ダメ。
npm installで再生成されるため、変更は package 側で行う。
関連
見つからないときは Cannot find module、再現の鍵は lockfile を参照。