Bun は package.json 内の npm の "overrides" と Yarn の "resolutions" をサポートしています。これらは メタ依存関係(依存関係の依存関係)のバージョン範囲を指定するメカニズムです。
json
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
},
"overrides": {
"bar": "~4.4.0"
}
}デフォルトで、Bun は各パッケージの package.json で指定された範囲に従って、すべての依存関係とメタ依存関係の最新バージョンをインストールします。プロジェクトに依存関係が 1 つ(foo)あり、それが順番に bar に依存しているとします。これは、bar がプロジェクトの メタ依存関係 であることを意味します。
json
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
}
}bun install を実行すると、Bun は各パッケージの最新バージョンをインストールします。
txt
node_modules
├── foo@1.2.3
└── bar@4.5.6しかし、bar@4.5.6 にセキュリティの脆弱性が導入されたらどうでしょうか。脆弱性のない古いバージョンに bar を固定したいかもしれません。ここで "overrides"/"resolutions" が登場します。
"overrides"
package.json の "overrides" フィールドに bar を追加します。Bun は、bar が依存関係かメタ依存関係かに関係なく、インストールする bar のバージョンを決定する際に指定されたバージョン範囲を優先します。
NOTE
Bun は現在、トップレベルの `"overrides"` のみをサポートしています。[ネストされた オーバーライド](https://docs.npmjs.com/cli/v9/configuring-npm/package-json#overrides) はサポートされていません。json
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
},
"overrides": {
"bar": "~4.4.0"
}
}"resolutions"
構文は Yarn の "overrides" 代替案である "resolutions" と似ています。Bun は Yarn からの移行を容易にするためにこの機能をサポートしています。
"overrides" と同様に、ネストされた解決 は現在サポートされていません。
json
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
},
"resolutions": {
"bar": "~4.4.0"
}
}