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 instaladopostinstall: Se ejecuta después de que el paquete sea instaladopostuninstall: Se ejecuta antes de que el paquete sea desinstaladoprepublishOnly: 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.
{
"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.
{
"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.
bun install --ignore-scripts