Skip to content

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

bun patch 讓你以可維護、git 友好的方式持久化修補 node_modules。

有時,你需要對 node_modules/ 中的包進行小改動以修復 bug 或添加功能。bun patch 使你可以輕松完成此操作,而無需將整個包 vendoring,並可在多次安裝、多個項目和多台機器上重用修補程序。

功能:

  • 生成 .patch 文件,在安裝時應用於 node_modules 中的依賴
  • .patch 文件可以提交到你的倉庫,在多次安裝、項目和機器上重用
  • package.json 中的 "patchedDependencies" 跟蹤已修補的包
  • 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> 使直接編輯 node_modules/ 中的 <pkg> 變得安全,同時保持 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整理維護