Bun supporta gli "overrides" di npm e le "resolutions" di Yarn in package.json. Questi sono meccanismi per specificare un intervallo di versioni per le metadipendenze—le dipendenze delle tue dipendenze.
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
},
"overrides": {
"bar": "~4.4.0"
}
}Per impostazione predefinita, Bun installerà le ultime versioni di tutte le dipendenze e metadipendenze, secondo gli intervalli specificati nel package.json di ogni pacchetto. Diciamo che hai un progetto con una dipendenza, foo, che a sua volta ha una dipendenza su bar. Questo significa che bar è una metadipendenza del nostro progetto.
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
}
}Quando esegui bun install, Bun installerà le ultime versioni di ogni pacchetto.
node_modules
├── foo@1.2.3
└── bar@4.5.6Ma cosa succede se una vulnerabilità di sicurezza è stata introdotta in bar@4.5.6? Potremmo voler avere un modo per fissare bar a una versione più vecchia che non ha la vulnerabilità. È qui che entrano in gioco "overrides"/"resolutions".
"overrides"
Aggiungi bar al campo "overrides" in package.json. Bun si atterrà all'intervallo di versioni specificato quando determina quale versione di bar installare, sia che sia una dipendenza o una metadipendenza.
NOTE
Bun attualmente supporta solo `"overrides"` di primo livello. Gli [override annidati](https://docs.npmjs.com/cli/v9/configuring-npm/package-json#overrides) non sono supportati.{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
},
"overrides": {
"bar": "~4.4.0"
}
}"resolutions"
La sintassi è simile per "resolutions", che è l'alternativa di Yarn a "overrides". Bun supporta questa funzionalità per rendere più facile la migrazione da Yarn.
Come con "overrides", le risoluzioni annidate non sono attualmente supportate.
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
},
"resolutions": {
"bar": "~4.4.0"
}
}