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