Pacotes no npm podem definir scripts de ciclo de vida em seu package.json. Alguns dos mais comuns estão abaixo, mas há muitos outros.
preinstall: Executa antes do pacote ser instaladopostinstall: Executa depois que o pacote é instaladopostuninstall: Executa antes do pacote ser desinstaladoprepublishOnly: Executa antes do pacote ser publicado
Estes scripts são comandos shell arbitrários que o gerenciador de pacotes deve ler e executar no momento apropriado. Mas executar scripts arbitrários representa um risco de segurança potencial, então—ao contrário de outros clientes npm—o Bun não executa scripts de ciclo de vida arbitrários por padrão.
postinstall
O script postinstall é particularmente importante. É amplamente usado para construir ou instalar binários específicos de plataforma para pacotes que são implementados como add-ons nativos do Node.js. Por exemplo, node-sass é um pacote popular que usa postinstall para construir um binário nativo para Sass.
{
"name": "my-app",
"version": "1.0.0",
"dependencies": {
"node-sass": "^6.0.1"
}
}trustedDependencies
Em vez de executar scripts arbitrários, o Bun usa uma abordagem "padrão-seguro". Você pode adicionar certos pacotes a uma lista de permissões e o Bun executará scripts de ciclo de vida para esses pacotes. Para dizer ao Bun para permitir scripts de ciclo de vida para um pacote específico, adicione o nome do pacote ao array trustedDependencies no seu package.json.
{
"name": "my-app",
"version": "1.0.0",
"trustedDependencies": ["node-sass"]
}Uma vez adicionado ao trustedDependencies, instale/reinstale o pacote. O Bun lerá este campo e executará scripts de ciclo de vida para my-trusted-package.
Os 500 principais pacotes npm com scripts de ciclo de vida são permitidos por padrão. Você pode ver a lista completa aqui.
--ignore-scripts
Para desabilitar scripts de ciclo de vida para todos os pacotes, use a flag --ignore-scripts.
bun install --ignore-scripts