Bun unterstützt "overrides" von npm und "resolutions" von Yarn in package.json. Dies sind Mechanismen zur Angabe eines Versionsbereichs für Metadependencies — die Abhängigkeiten Ihrer Abhängigkeiten.
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
},
"overrides": {
"bar": "~4.4.0"
}
}Standardmäßig installiert Bun die neuesten Versionen aller Abhängigkeiten und Metadependencies gemäß den in der package.json jedes Pakets angegebenen Bereichen. Angenommen, Sie haben ein Projekt mit einer Abhängigkeit foo, die ihrerseits eine Abhängigkeit von bar hat. Das bedeutet, bar ist eine Metadependency unseres Projekts.
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
}
}Wenn Sie bun install ausführen, installiert Bun die neuesten Versionen jedes Pakets.
node_modules
├── foo@1.2.3
└── bar@4.5.6Aber was ist, wenn eine Sicherheitslücke in bar@4.5.6 eingeführt wurde? Wir möchten möglicherweise eine Möglichkeit haben, bar auf eine ältere Version zu fixieren, die die Sicherheitslücke nicht hat. Hier kommen "overrides"/"resolutions" ins Spiel.
"overrides"
Fügen Sie bar zum "overrides"-Feld in package.json hinzu. Bun berücksichtigt den angegebenen Versionsbereich bei der Bestimmung, welche Version von bar installiert werden soll, ob es sich um eine Abhängigkeit oder eine Metadependency handelt.
NOTE
Bun unterstützt derzeit nur `"overrides"` auf oberster Ebene. [Verschachtelte Overrides](https://docs.npmjs.com/cli/v9/configuring-npm/package-json#overrides) werden nicht unterstützt.{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
},
"overrides": {
"bar": "~4.4.0"
}
}"resolutions"
Die Syntax ist ähnlich für "resolutions", was Yarns Alternative zu "overrides" ist. Bun unterstützt diese Funktion, um die Migration von Yarn zu erleichtern.
Wie bei "overrides" werden verschachtelte Resolutions derzeit nicht unterstützt.
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
},
"resolutions": {
"bar": "~4.4.0"
}
}