Bun prend en charge les "overrides" de npm et les "resolutions" de Yarn dans package.json. Ce sont des mécanismes pour spécifier une plage de versions pour les métadépendances—les dépendances de vos dépendances.
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
},
"overrides": {
"bar": "~4.4.0"
}
}Par défaut, Bun installera la dernière version de toutes les dépendances et métadépendances, selon les plages spécifiées dans le package.json de chaque package. Disons que vous avez un projet avec une dépendance, foo, qui a à son tour une dépendance sur bar. Cela signifie que bar est une métadépendance de notre projet.
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
}
}Lorsque vous exécutez bun install, Bun installera les dernières versions de chaque package.
node_modules
├── foo@1.2.3
└── bar@4.5.6Mais que se passe-t-il si une vulnérabilité de sécurité a été introduite dans bar@4.5.6 ? Nous pourrions vouloir un moyen de fixer bar à une version plus ancienne qui n'a pas la vulnérabilité. C'est ici que "overrides"/"resolutions" entrent en jeu.
"overrides"
Ajoutez bar au champ "overrides" dans package.json. Bun différera à la plage de versions spécifiée lors de la détermination de la version de bar à installer, qu'il s'agisse d'une dépendance ou d'une métadépendance.
NOTE
Bun prend actuellement en charge uniquement les `"overrides"` de niveau supérieur. Les [overrides imbriqués](https://docs.npmjs.com/cli/v9/configuring-npm/package-json#overrides) ne sont pas pris en charge.{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
},
"overrides": {
"bar": "~4.4.0"
}
}"resolutions"
La syntaxe est similaire pour "resolutions", qui est l'alternative de Yarn à "overrides". Bun prend en charge cette fonctionnalité pour faciliter la migration depuis Yarn.
Comme pour "overrides", les résolutions imbriquées ne sont actuellement pas prises en charge.
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
},
"resolutions": {
"bar": "~4.4.0"
}
}