lockfileとは?
lockfileは、プロジェクトが解決したすべての直接依存関係と推移的依存関係の正確なバージョン、そして多くの場合暗号学的ハッシュを固定する、生成されるファイルです。package-lock.json、yarn.lock、Cargo.lockのようなファイルにより、どのマシンでも同一の依存関係ツリーを再インストールできます。これらはビルドを決定的にし、予期しないupstreamの変更から保護します。
なぜ重要か
manifest内のバージョン範囲はインストールごとに異なる解決結果になることがあり、「自分のマシンでは動く」というバグやサプライチェーンのリスクを引き起こします。コミットされたlockfileは解決結果を固定するため、CIは開発者がテストしたものと正確に同じものをインストールし、記録されたハッシュが改ざんを検出します。
関連する概念
- 直接依存だけでなく推移的依存も捕捉する
- ハッシュが整合性の検証を提供する
- CIでフローズンインストールモードを使って強制する
関連ガイド
What Is Dependency Pinning?Dependency pinning fixes dependencies to exact versions (or hashes) instead of ranges, so builds are predicta…
What Is a Transitive Dependency?A transitive dependency is one you do not require directly but pull in indirectly because a dependency of you…
What Is a Reproducible Build?A reproducible build produces bit-for-bit identical output every time from the same source, letting anyone in…