Skip to main content
bun patch 让你可以以一种可维护、对 Git 友好的方式持久地修补 [node_modules]。 有时,你需要对 [node_modules/] 中的包做一些小改动来修复错误或添加功能。bun patch 让你可以轻松地做到这一点,而无需将整个包复制到项目中,并且可以在多个安装、多个项目和多台机器之间重用补丁。 功能:
  • 生成在安装时应用到 [node_modules] 中依赖的 .patch 文件
  • .patch 文件可以提交到你的仓库,在多个安装、项目和机器之间重用
  • [package.json] 中的 "patchedDependencies" 跟踪打过补丁的包
  • bun patch 让你修补 [node_modules/] 中的包,同时保持 Bun 的全局缓存完整性
  • 在使用 bun patch --commit <pkg> 提交更改之前,可以在本地测试你的更改
  • 为了节省磁盘空间并保持 bun install 的速度,打过补丁的包会被提交到全局缓存并在可能的情况下在项目间共享

步骤 1. 准备要打补丁的包

要开始,请使用 bun patch <pkg> 准备要打补丁的包:
terminal
# 你可以提供包名
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 将开始使用打过补丁的包:
terminal
# 你可以提供打过补丁的包的路径
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

CLI 用法

bun patch <package>@<version>

补丁生成

--commit
boolean
安装包含 dir 中修改的包
--patches-dir
string
放置补丁文件的目录(仅当使用 —commit 时)

依赖管理

--production
boolean
不安装 devDependencies。别名:-p
--ignore-scripts
boolean
跳过项目 package.json 中的生命周期脚本(依赖脚本永远不会运行)
--trust
boolean
添加到项目 package.json 中的 trustedDependencies 并安装包
--global
boolean
全局安装。别名:-g
--omit
string
从安装中排除 devoptionalpeer 依赖

项目文件和锁文件

--yarn
boolean
写入 yarn.lock 文件(yarn v1)。别名:-y
--no-save
boolean
不更新 package.json 或保存锁文件
--save
boolean
default:"true"
保存到 package.json(默认为 true)
--frozen-lockfile
boolean
禁止更改锁文件
--save-text-lockfile
boolean
保存基于文本的锁文件
--lockfile-only
boolean
生成锁文件但不安装依赖

安装控制

--backend
string
default:"clonefile"
安装依赖的平台特定优化。可能的值:clonefile(默认)、 hardlinksymlinkcopyfile
--linker
string
链接器策略(isolatedhoisted 之一)
--dry-run
boolean
不安装任何内容
--force
boolean
始终从注册表请求最新版本并重新安装所有依赖。别名:-f
--no-verify
boolean
跳过验证新下载包的完整性

网络和注册表

--ca
string
提供证书颁发机构签名证书
--cafile
string
—ca 相同,但作为证书的文件路径
--registry
string
默认使用特定注册表,覆盖 .npmrcbunfig.toml 和环境 变量
--network-concurrency
number
default:"48"
最大并发网络请求数(默认为 48)

性能和资源

--concurrent-scripts
number
default:"5"
生命周期脚本的最大并发作业数(默认为 5)

缓存

--cache-dir
string
从特定目录路径存储和加载缓存数据
--no-cache
boolean
完全忽略清单缓存

输出和日志

--silent
boolean
不记录任何内容
--quiet
boolean
打包时仅显示 tarball 名称
--verbose
boolean
过度详细的日志记录
--no-progress
boolean
禁用进度条
--no-summary
boolean
不打印摘要

平台目标

--cpu
string
覆盖可选依赖的 CPU 架构(例如,x64arm64* 表示全部)
--os
string
覆盖可选依赖的操作系统(例如,linuxdarwin* 表示全部)

全局配置和上下文

--config
string
指定配置文件路径(bunfig.toml)。别名:-c
--cwd
string
设置特定的当前工作目录

帮助

--help
boolean
打印此帮助菜单。别名:-h