Skip to content

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.

json
{
  "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.

json
{
  "name": "my-app",
  "dependencies": {
    "foo": "^2.0.0"
  }
}

Quando esegui bun install, Bun installerà le ultime versioni di ogni pacchetto.

txt
node_modules
├── foo@1.2.3
└── bar@4.5.6

Ma 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.
json
{
  "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.

json
{
  "name": "my-app",
  "dependencies": {
    "foo": "^2.0.0"
  },
  "resolutions": { 
    "bar": "~4.4.0"
  } 
}

Bun a cura di www.bunjs.com.cn