Skip to content

Pakete auf npm können Lifecycle-Skripte in ihrer package.json definieren. Einige der häufigsten sind unten aufgeführt, aber es gibt viele andere.

  • preinstall: Wird ausgeführt, bevor das Paket installiert wird
  • postinstall: Wird ausgeführt, nachdem das Paket installiert wurde
  • preuninstall: Wird ausgeführt, bevor das Paket deinstalliert wird
  • prepublishOnly: Wird ausgeführt, bevor das Paket veröffentlicht wird

Diese Skripte sind beliebige Shell-Befehle, die der Paketmanager zum geeigneten Zeitpunkt lesen und ausführen soll. Das Ausführen beliebiger Skripte stellt jedoch ein potenzielles Sicherheitsrisiko dar, daher führt Bun — im Gegensatz zu anderen npm-Clients — nicht standardmäßig beliebige Lifecycle-Skripte aus.


postinstall

Das postinstall-Skript ist besonders wichtig. Es wird häufig verwendet, um plattformspezifische Binärdateien für Pakete zu bauen oder zu installieren, die als native Node.js-Addons implementiert sind. Zum Beispiel verwendet node-sass, ein beliebtes Paket, postinstall, um eine native Binärdatei für Sass zu bauen.

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

trustedDependencies

Anstatt beliebige Skripte auszuführen, verwendet Bun einen "standardmäßig sicheren" Ansatz. Sie können bestimmte Pakete zu einer Allowlist hinzufügen, und Bun führt Lifecycle-Skripte für diese Pakete aus. Um Bun mitzuteilen, dass es Lifecycle-Skripte für ein bestimmtes Paket zulassen soll, fügen Sie den Paketnamen zum trustedDependencies-Array in Ihrer package.json hinzu.

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

Sobald es zu trustedDependencies hinzugefügt wurde, installieren/erneut installieren Sie das Paket. Bun liest dieses Feld und führt Lifecycle-Skripte für my-trusted-package aus.

Die Top 500 npm-Pakete mit Lifecycle-Skripten sind standardmäßig erlaubt. Sie können die vollständige Liste hier einsehen.


--ignore-scripts

Um Lifecycle-Skripte für alle Pakete zu deaktivieren, verwenden Sie das --ignore-scripts-Flag.

bash
bun install --ignore-scripts

Bun von www.bunjs.com.cn bearbeitet