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