Bun

生命週期腳本

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

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

這些腳本是任意殼牌命令,套件管理員預期會在適當的時間讀取並執行這些命令。但是,執行任意腳本會構成潛在的安全風險,因此與其他 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