Bun

生命週期指令碼

npm 上的套件可以在其 package.json 中定義生命週期指令碼。以下是一些最常見的指令碼,但還有許多其他的指令碼

  • preinstall:在套件安裝前執行
  • postinstall:在套件安裝後執行
  • preuninstall:在套件解除安裝前執行
  • prepublishOnly:在套件發佈前執行

這些指令碼是任意的 shell 命令,套件管理器應讀取並在適當的時間執行。但是,執行任意指令碼代表潛在的安全風險,因此,與其他 npm 用戶端不同,Bun 預設不執行任意生命週期指令碼。

postinstall

postinstall 指令碼尤其重要。它廣泛用於為以原生 Node.js 附加元件實作的套件建置或安裝平台特定的二進位檔案。例如,node-sass 是一個流行的套件,它使用 postinstall 來為 Sass 建置原生二進位檔案。

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

trustedDependencies

Bun 沒有執行任意指令碼,而是採用「預設安全」的方法。您可以將某些套件新增到允許清單中,Bun 將為這些套件執行生命週期指令碼。若要告知 Bun 允許特定套件的生命週期指令碼,請將套件名稱新增到 package.json 中的 trustedDependencies 陣列。

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

一旦新增到 trustedDependencies,請安裝/重新安裝套件。Bun 將讀取此欄位並為 my-trusted-package 執行生命週期指令碼。

從 Bun v1.0.16 開始,預設允許前 500 個具有生命週期指令碼的 npm 套件。您可以在此處查看完整列表。

--ignore-scripts

若要停用所有套件的生命週期指令碼,請使用 --ignore-scripts 標記。

bun install --ignore-scripts