Skip to content

import Patch from "/ru/snippets/cli/patch.mdx";

bun patch позволяет постоянно патчить node_modules поддерживаемым, git-совместимым способом.

Иногда вам нужно внести небольшое изменение в пакет в node_modules/, чтобы исправить ошибку или добавить функцию. bun patch упрощает это без вендоринга всего пакета и позволяет повторно использовать патч для нескольких установок, проектов и машин.

Возможности:

  • Генерирует .patch файлы, применяемые к зависимостям в node_modules при установке
  • .patch файлы можно зафиксировать в вашем репозитории, повторно использовать для нескольких установок, проектов и машин
  • "patchedDependencies" в package.json отслеживает патченные пакеты
  • bun patch позволяет патчить пакеты в node_modules/, сохраняя целостность глобального кэша Bun
  • Тестируйте изменения локально перед фиксацией с помощью bun patch --commit <pkg>
  • Для экономии места на диске и ускорения bun install патченные пакеты фиксируются в глобальном кэше и при возможности используются совместно между проектами

Шаг 1. Подготовка пакета к патчингу

Для начала используйте bun patch <pkg> для подготовки пакета к патчингу:

bash
# вы можете указать имя пакета
bun patch react
# ...или точную версию, если установлено несколько версий
bun patch react@17.0.2
# или путь к пакету
bun patch node_modules/react

Примечание

Не забудьте вызвать bun patch <pkg>! Это гарантирует, что папка пакета в node_modules/ содержит свежую копию пакета без символических/жестких ссылок на кэш Bun. Если вы забудете это сделать, вы можете в конечном итоге редактировать пакет глобально в кэше!

Шаг 2. Тестирование изменений локально

bun patch <pkg> делает безопасным редактирование <pkg> в node_modules/ напрямую, сохраняя целостность глобального кэша Bun. Это работает путем воссоздания несвязанной копии пакета в node_modules/ и сравнения его с оригинальным пакетом в глобальном кэше.

Шаг 3. Фиксация изменений

Когда вы довольны своими изменениями, выполните bun patch --commit <path or pkg>.

Bun сгенерирует файл патча в patches/, обновит ваш package.json и файл блокировки, и Bun начнет использовать патченный пакет:

bash
# вы можете указать путь к патченному пакету
bun patch --commit node_modules/react

# ... или имя пакета и опционально версию
bun patch --commit react@17.0.2

# выберите каталог для хранения файлов патчей
bun patch --commit react --patches-dir=mypatches

# `patch-commit` доступен для совместимости с pnpm
bun patch-commit react

Bun от www.bunjs.com.cn