Lockfile
別名: ロックファイル / package-lock.json / yarn.lock / pnpm-lock.yaml
依存パッケージの解決済バージョン・取得元 URL・整合性ハッシュを固定するファイル。同じ依存ツリーをチームと CI で再現するためにパッケージマネージャが生成する。
公開:
定義
Lockfile(ロックファイル)はパッケージマネージャが依存解決の結果を記録するファイル。
各依存パッケージの厳密なバージョン、取得元 URL、整合性ハッシュなどを保存する。Node.js では npm が package-lock.json、Yarn が yarn.lock、pnpm が pnpm-lock.yaml、Bun が bun.lockb を使う。package.json がレンジ指定(^1.2.0 等)を許す一方、lockfile は実際に解決された 1 点を固定する役割。
詳細
npm install を初回実行すると lockfile が生成され、以降は lockfile に従って同じツリーが再構築される。
これによりローカル・CI・本番で依存バージョンが揺れず、ビルド再現性が確保される。
CI では npm ci のような lockfile 必須・厳格モードを使うのが推奨。
lockfile はバージョン管理にコミットするのが原則で、.gitignore には入れない。
複数のパッケージマネージャを混在させると lockfile が衝突するため、プロジェクトでは 1 種類に統一する必要がある。
よくある誤解
「lockfile を消せば最新バージョンに上がる」と思われがちだが、これは依存解決をやり直すだけで、レンジに収まる最新版が選ばれるとは限らない。
意図的に上げたいなら npm update や npm install pkg@latest を使う。--legacy-peer-deps や --force で生成された lockfile は不整合を含む可能性があるので、原因解消後に作り直すのが安全。
関連
peerDependency 衝突時の ERESOLVE エラー や、Vercel ビルド失敗 の原因切り分けで頻繁に参照する概念。