Skip to content

Bun поддерживает "overrides" от npm и "resolutions" от Yarn в package.json. Это механизмы для указания диапазона версий мета-зависимостей — зависимостей ваших зависимостей.

json
{
  "name": "my-app",
  "dependencies": {
    "foo": "^2.0.0"
  },
  "overrides": { 
    "bar": "~4.4.0"
  } 
}

По умолчанию Bun устанавливает последние версии всех зависимостей и мета-зависимостей согласно диапазонам, указанным в package.json каждого пакета. Предположим, у вас есть проект с одной зависимостью foo, которая, в свою очередь, зависит от bar. Это означает, что bar является мета-зависимостью нашего проекта.

json
{
  "name": "my-app",
  "dependencies": {
    "foo": "^2.0.0"
  }
}

Когда вы выполняете bun install, Bun устанавливает последние версии каждого пакета.

txt
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) не поддерживаются.
json
{
  "name": "my-app",
  "dependencies": {
    "foo": "^2.0.0"
  },
  "overrides": { 
    "bar": "~4.4.0"
  } 
}

"resolutions"

Синтаксис аналогичен для "resolutions", который является альтернативой "overrides" от Yarn. Bun поддерживает эту функцию, чтобы облегчить миграцию с Yarn.

Как и в случае с "overrides", вложенные разрешения в настоящее время не поддерживаются.

json
{
  "name": "my-app",
  "dependencies": {
    "foo": "^2.0.0"
  },
  "resolutions": { 
    "bar": "~4.4.0"
  } 
}

Bun от www.bunjs.com.cn