bun patch 以可维护、git 友好的方式持久化修补 node_modules 中的包。
有时你需要对 node_modules/ 中的包进行小的更改来修复 bug 或添加功能。bun patch 让你无需引入整个包即可完成此操作。
特性:
- 生成
.patch文件,Bun 在安装时会将其应用到node_modules中的依赖上 .patch文件可以提交到你的仓库,并在不同安装、项目和机器之间重用"patchedDependencies"在package.json中跟踪修补过的包- 修补
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 <path or pkg>。
Bun 会在 patches/ 中生成一个补丁文件,更新你的 package.json 和锁文件,并开始使用修补后的包:
terminal
CLI 用法
补丁生成
安装包含
dir 中修改的包存放补丁文件的目录(仅在使用了 —commit 时)
依赖管理
不安装 devDependencies。别名:
-p跳过项目
package.json 中的生命周期脚本(依赖的脚本从不运行)添加到项目
package.json 的 trustedDependencies 中并安装该包全局安装。别名:
-g从安装中排除
dev、optional 或 peer 依赖项目文件与 Lockfile
写入
yarn.lock 文件(yarn v1)。别名:-y不更新
package.json 或不保存 lockfile保存到
package.json(默认为 true)禁止更改 lockfile
保存基于文本的 lockfile
仅生成 lockfile,不安装依赖
安装控制
安装依赖的特定平台优化。可能的值:
clonefile(默认)、hardlink、symlink、copyfile链接器策略(
isolated 或 hoisted 之一)不实际安装任何内容
始终从注册表请求最新版本并重新安装所有依赖。别名:
-f跳过验证新下载包的完整性
网络与注册表
提供证书颁发机构签名证书
与
—ca 相同,但指定证书的文件路径使用特定注册表,覆盖
.npmrc、bunfig.toml 和环境变量最大并发网络请求数(默认 48)
性能与资源
生命周期脚本的最大并发作业数(默认:2 倍 CPU 核心数)
缓存
从特定目录路径存储和加载缓存数据
完全忽略清单缓存
输出与日志
不输出任何日志
打包时仅显示 tarball 名称
极度详细的日志输出
禁用进度条
不打印摘要
平台目标
覆盖可选依赖的 CPU 架构(例如
x64、arm64、* 表示全部)覆盖可选依赖的操作系统(例如
linux、darwin、* 表示全部)全局配置与上下文
指定配置文件路径(
bunfig.toml)。别名:-c设置特定的当前工作目录
帮助
打印此帮助菜单。别名:
-h