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