O Bun suporta "overrides" do npm e "resolutions" do Yarn no package.json. Estes são mecanismos para especificar um intervalo de versão para metadependências—as dependências das suas dependências.
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
},
"overrides": {
"bar": "~4.4.0"
}
}Por padrão, o Bun instalará a versão mais recente de todas as dependências e metadependências, de acordo com os intervalos especificados no package.json de cada pacote. Digamos que você tenha um projeto com uma dependência, foo, que por sua vez tem uma dependência em bar. Isso significa que bar é uma metadependência do nosso projeto.
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
}
}Quando você executa bun install, o Bun instalará as versões mais recentes de cada pacote.
node_modules
├── foo@1.2.3
└── bar@4.5.6Mas e se uma vulnerabilidade de segurança foi introduzida em bar@4.5.6? Podemos querer uma maneira de fixar bar em uma versão mais antiga que não tenha a vulnerabilidade. É aqui que "overrides"/"resolutions" entram.
"overrides"
Adicione bar ao campo "overrides" no package.json. O Bun deferirá ao intervalo de versão especificado ao determinar qual versão de bar instalar, seja ela uma dependência ou metadependência.
NOTE
O Bun atualmente suporta apenas `"overrides"` de nível superior. [Substituições aninhadas](https://docs.npmjs.com/cli/v9/configuring-npm/package-json#overrides) não são suportadas.{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
},
"overrides": {
"bar": "~4.4.0"
}
}"resolutions"
A sintaxe é similar para "resolutions", que é a alternativa do Yarn ao "overrides". O Bun suporta este recurso para facilitar a migração do Yarn.
Assim como "overrides", resoluções aninhadas não são suportadas atualmente.
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
},
"resolutions": {
"bar": "~4.4.0"
}
}