Bun 支援 npm 的 "overrides"
和 Yarn 的 "resolutions"
在 package.json
中。這些是指定 metadependencies(您的依賴項的依賴項)的版本範圍的機制。
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
},
"overrides": {
"bar": "~4.4.0"
}
}
預設情況下,Bun 會根據每個套件的 package.json
中指定的範圍,安裝所有依賴項和 metadependencies 的最新版本。假設您有一個依賴項 foo
的專案,而 foo
又依賴於 bar
。這表示 bar
是我們專案的 metadependency。
{
"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"
欄位。Bun 會在決定要安裝哪個版本的 bar
時,無論它是依賴項還是 metadependency,都會遵循指定的版本範圍。
注意 — 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"
}
}