Bun 支援 npm 的 "overrides"
和 Yarn 的 "resolutions"
在 package.json
中。這些機制用於指定*中繼依賴項*(dependencies of your dependencies)的版本範圍。
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
},
"overrides": {
"bar": "~4.4.0"
}
}
預設情況下,Bun 將根據每個套件的 package.json
中指定的範圍,安裝所有依賴項和中繼依賴項的最新版本。假設您有一個專案,其中一個依賴項為 foo
,而 foo
又依賴於 bar
。這表示 bar
是我們專案的*中繼依賴項*。
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
}
}
當您執行 bun install
時,Bun 將安裝每個套件的最新版本。
# tree layout of node_modules
node_modules
├── foo@1.2.3
└── bar@4.5.6
但是,如果在 bar@4.5.6
中引入了安全漏洞怎麼辦?我們可能需要一種方法將 bar
固定到沒有漏洞的舊版本。這就是 "overrides"
/"resolutions"
的用途。
"overrides"
將 bar
新增至 package.json
中的 "overrides"
欄位。當決定要安裝哪個版本的 bar
時,無論它是依賴項還是中繼依賴項,Bun 都會參考指定的版本範圍。
注意 — Bun 目前僅支援頂層 "overrides"
。不支援巢狀覆寫。
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
},
"overrides": {
"bar": "~4.4.0"
}
}
"resolutions"
"resolutions"
的語法與之類似,它是 Yarn 替代 "overrides"
的方案。Bun 支援此功能,以簡化從 Yarn 的遷移。
與 "overrides"
一樣,目前不支援巢狀解析。
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
},
"resolutions": {
"bar": "~4.4.0"
}
}