Bun поддерживает "overrides" от npm и "resolutions" от Yarn в package.json. Это механизмы для указания диапазона версий мета-зависимостей — зависимостей ваших зависимостей.
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
},
"overrides": {
"bar": "~4.4.0"
}
}По умолчанию Bun устанавливает последние версии всех зависимостей и мета-зависимостей согласно диапазонам, указанным в package.json каждого пакета. Предположим, у вас есть проект с одной зависимостью foo, которая, в свою очередь, зависит от bar. Это означает, что bar является мета-зависимостью нашего проекта.
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
}
}Когда вы выполняете bun install, Bun устанавливает последние версии каждого пакета.
node_modules
├── foo@1.2.3
└── bar@4.5.6Но что, если уязвимость безопасности была внесена в bar@4.5.6? Нам может потребоваться способ закрепления bar на более старой версии, которая не имеет уязвимости. Именно здесь вступают в игру "overrides"/"resolutions".
"overrides"
Добавьте bar в поле "overrides" в package.json. Bun будет использовать указанный диапазон версий при определении, какую версию bar установить, будь то зависимость или мета-зависимость.
NOTE
Bun в настоящее время поддерживает только переопределения верхнего уровня. [Вложенные переопределения](https://docs.npmjs.com/cli/v9/configuring-npm/package-json#overrides) не поддерживаются.{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
},
"overrides": {
"bar": "~4.4.0"
}
}"resolutions"
Синтаксис аналогичен для "resolutions", который является альтернативой "overrides" от Yarn. Bun поддерживает эту функцию, чтобы облегчить миграцию с Yarn.
Как и в случае с "overrides", вложенные разрешения в настоящее время не поддерживаются.
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
},
"resolutions": {
"bar": "~4.4.0"
}
}