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> для подготовки пакета к патчингу:
# вы можете указать имя пакета
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 начнет использовать патченный пакет:
# вы можете указать путь к патченному пакету
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