Bun soporta "overrides" de npm y "resolutions" de Yarn en package.json. Estos son mecanismos para especificar un rango de versiones para metadependencias—las dependencias de tus dependencias.
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
},
"overrides": {
"bar": "~4.4.0"
}
}Por defecto, Bun instalará la última versión de todas las dependencias y metadependencias, según los rangos especificados en el package.json de cada paquete. Digamos que tienes un proyecto con una dependencia, foo, que a su vez tiene una dependencia en bar. Esto significa que bar es una metadependencia de nuestro proyecto.
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
}
}Cuando ejecutas bun install, Bun instalará las últimas versiones de cada paquete.
node_modules
├── foo@1.2.3
└── bar@4.5.6Pero ¿qué pasa si se introduce una vulnerabilidad de seguridad en bar@4.5.6? Podemos querer una forma de fijar bar a una versión anterior que no tenga la vulnerabilidad. Aquí es donde entran "overrides"/"resolutions".
"overrides"
Agrega bar al campo "overrides" en package.json. Bun diferirá al rango de versión especificado al determinar qué versión de bar instalar, ya sea una dependencia o una metadependencia.
NOTE
Bun actualmente solo soporta `"overrides"` de nivel superior. Las [anulaciones anidadas](https://docs.npmjs.com/cli/v9/configuring-npm/package-json#overrides) no son soportadas.{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
},
"overrides": {
"bar": "~4.4.0"
}
}"resolutions"
La sintaxis es similar para "resolutions", que es la alternativa de Yarn a "overrides". Bun soporta esta característica para hacer la migración desde Yarn más fácil.
Al igual que con "overrides", las resoluciones anidadas no son soportadas actualmente.
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
},
"resolutions": {
"bar": "~4.4.0"
}
}