Skip to content

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.

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

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

Cuando ejecutas bun install, Bun instalará las últimas versiones de cada paquete.

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

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

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

Bun por www.bunjs.com.cn editar