Skip to content

Los paquetes en npm pueden definir scripts de ciclo de vida en su package.json. Algunos de los más comunes están abajo, pero hay muchos otros.

  • preinstall: Se ejecuta antes de que el paquete sea instalado
  • postinstall: Se ejecuta después de que el paquete sea instalado
  • postuninstall: Se ejecuta antes de que el paquete sea desinstalado
  • prepublishOnly: Se ejecuta antes de que el paquete sea publicado

Estos scripts son comandos de shell arbitrarios que se espera que el gestor de paquetes lea y ejecute en el momento apropiado. Pero ejecutar scripts arbitrarios representa un riesgo de seguridad potencial, por lo que, a diferencia de otros clientes npm, Bun no ejecuta scripts de ciclo de vida arbitrarios por defecto.


postinstall

El script postinstall es particularmente importante. Es ampliamente usado para compilar o instalar binarios específicos de plataforma para paquetes que están implementados como complementos nativos de Node.js. Por ejemplo, node-sass es un paquete popular que usa postinstall para compilar un binario nativo para Sass.

json
{
  "name": "my-app",
  "version": "1.0.0",
  "dependencies": {
    "node-sass": "^6.0.1"
  }
}

trustedDependencies

En lugar de ejecutar scripts arbitrarios, Bun usa un enfoque "seguro por defecto". Puedes agregar ciertos paquetes a una lista de permitidos, y Bun ejecutará scripts de ciclo de vida para esos paquetes. Para decirle a Bun que permita scripts de ciclo de vida para un paquete en particular, agrega el nombre del paquete al array trustedDependencies en tu package.json.

json
{
  "name": "my-app",
  "version": "1.0.0",
  "trustedDependencies": ["node-sass"] 
}

Una vez agregado a trustedDependencies, instala/re-instala el paquete. Bun leerá este campo y ejecutará scripts de ciclo de vida para my-trusted-package.

Los 500 paquetes principales de npm con scripts de ciclo de vida están permitidos por defecto. Puedes ver la lista completa aquí.


--ignore-scripts

Para deshabilitar scripts de ciclo de vida para todos los paquetes, usa la bandera --ignore-scripts.

bash
bun install --ignore-scripts

Bun por www.bunjs.com.cn editar