依存関係のベンダリングとは?
ベンダリングとは、ビルドのたびに外部レジストリからダウンロードするのではなく、サードパーティの依存関係のコピーを自分のソースリポジトリにチェックインするプラクティスです。ビルドはコミット済みのローカルコピーを使用します。これにより、upstreamのレジストリがダウンしていたりバージョンが消えたりしても、正確なコードが変更されずに利用可能であることが保証されます。
なぜ重要か
ベンダリングはレジストリの障害や取り下げられたパッケージに対してビルドを耐性のあるものにし、依存関係の変更をコードレビューで可視化します。トレードオフはリポジトリが大きくなることと、ベンダリングしたコピーを最新に保つ手作業であり、チームはこれをlockfileとキャッシングプロキシの組み合わせと比較検討します。
関連する概念
- ビルドごとにレジストリから取得する方式の代替
- ビルドの密閉性と再現性を向上させる
- lockfileはより軽量な固定の手法
関連ガイド
What Is a Lockfile?A lockfile records the exact resolved versions and hashes of every dependency, so installs are deterministic…
What Is Dependency Pinning?Dependency pinning fixes dependencies to exact versions (or hashes) instead of ranges, so builds are predicta…
What Is a Hermetic Build?A hermetic build depends only on explicitly declared, pinned inputs and is isolated from the host, so it prod…