できない.dev

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 に追加してコミットしないのが原則で、再現は lockfilenpm install で行う。
Docker では node_modules をボリュームやキャッシュの扱いで壊しやすく、ビルド時の COPY 対象からも外すことが多い。

よくある誤解

  • commit すべき: 通常は不要。
    lockfile があれば同じ依存を再現でき、リポジトリも軽く保てる。
  • 手で編集してよい: ダメ。npm install で再生成されるため、変更は package 側で行う。

関連

見つからないときは Cannot find module、再現の鍵は lockfile を参照。