bun patch 以可维护、对 Git 友好的方式持久化修补 node_modules 中的包。
有时你需要对 node_modules/ 中的包进行小幅修改,以修复 bug 或添加功能。bun patch 让你无需将整个包纳入项目即可完成这些操作。
功能特点:
- 生成
.patch文件,Bun 安装时会将其应用到node_modules中的依赖 .patch文件可以提交到代码仓库,并在不同安装、项目和机器之间重复使用package.json中的"patchedDependencies"会记录已修补的包- 修补
node_modules/中的包,同时保持 Bun 全局缓存的完整性 - 使用
bun patch --commit <pkg>提交前,可以在本地测试你的修改 - 为节省磁盘空间并保持
bun install的速度,已修补的包会提交到全局缓存,并尽可能在多个项目之间共享
第 1 步. 准备包进行补丁
使用bun patch <pkg> 准备要修补的包:
terminal
不要跳过
bun patch <pkg>。它可以确保 node_modules/ 中的包目录包含一个全新的包副本,不含指向 Bun 缓存的符号链接或硬链接。如果跳过这一步,你可能会修改缓存中的全局包。第 2 步. 本地测试你的修改
bun patch <pkg> 让你可以直接安全地编辑 node_modules/ 中的 <pkg>,同时保持 Bun 全局缓存的完整性。它的工作原理是在 node_modules/ 中重新创建一个未链接的包副本,并将其与全局缓存中的原始包进行差异比较。
第 3 步. 提交修改
当你满意修改后,执行bun patch --commit <路径或包名>。
Bun 会在 patches/ 中生成补丁文件,更新你的 package.json 和锁文件,并开始使用修补后的包:
terminal
CLI 使用说明
补丁生成
boolean
安装包含
dir 中修改内容的包string
补丁文件存放目录(仅当使用 —commit 时生效)
依赖管理
boolean
不安装 devDependencies。别名:
-pboolean
跳过项目
package.json 中的生命周期脚本(依赖的脚本永远不会执行)boolean
添加到项目
package.json 的 trustedDependencies 并安装该包boolean
全局安装。别名:
-gstring
从安装中排除
dev,optional 或 peer 依赖项目文件与锁文件
boolean
写入
yarn.lock 文件(yarn v1)。别名:-yboolean
不更新
package.json 或保存锁文件boolean
default:"true"
保存至
package.json(默认开启)boolean
禁止修改锁文件
boolean
保存文本格式的锁文件
boolean
仅生成锁文件,不安装依赖
安装控制
string
default:"clonefile"
针对依赖安装的特定平台优化。可选值:
clonefile(默认),hardlink,symlink,copyfilestring
链接策略(
isolated 或 hoisted 其中之一)boolean
不实际安装
boolean
始终请求最新版本并重新安装所有依赖。别名:
-fboolean
跳过验证新下载包的完整性
网络与注册表
string
提供证书颁发机构签名证书
string
同
—ca,但为证书文件路径string
使用指定的注册表,覆盖
.npmrc、bunfig.toml 及环境变量number
default:"48"
最大并发网络请求数(默认48)
性能与资源
number
生命周期脚本的最大并发任务数(默认为 CPU 核心数的 2 倍)
缓存
string
从指定目录存储和加载缓存数据
boolean
完全忽略清单缓存
输出与日志
boolean
不输出任何日志
boolean
打包时仅显示压缩包名称
boolean
非常详细的日志输出
boolean
禁用进度条
boolean
不打印摘要信息
平台目标
string
覆盖可选依赖的 CPU 架构(例如
x64, arm64, * 表示全部)string
覆盖可选依赖的操作系统(例如
linux, darwin, * 表示全部)全局配置与上下文
string
指定配置文件路径(
bunfig.toml)。别名:-cstring
设置当前工作目录
帮助
boolean
打印此帮助菜单。别名:
-h