--- title: "bun patch" description: "Persistently patch node_modules packages in a git-friendly way" --- import Patch from "/snippets/cli/patch.mdx"; `bun patch` persistently patches packages in `node_modules` in a maintainable, git-friendly way. Sometimes you need a small change to a package in `node_modules/` to fix a bug or add a feature. `bun patch` lets you do this without vendoring the entire package. Features: - Generates `.patch` files that Bun applies to dependencies in `node_modules` on install - You can commit `.patch` files to your repository and reuse them across installs, projects, and machines - `"patchedDependencies"` in `package.json` keeps track of patched packages - Patches packages in `node_modules/` while preserving the integrity of Bun's [Global Cache](/pm/global-cache) - Test your changes locally before committing them with `bun patch --commit ` - To preserve disk space and keep `bun install` fast, Bun commits patched packages to the Global Cache and shares them across projects where possible #### Step 1. Prepare the package for patching Use `bun patch ` to prepare the package for patching: ```bash terminal icon="terminal" # you can supply the package name bun patch react # ...and a precise version in case multiple versions are installed bun patch react@17.0.2 # or the path to the package bun patch node_modules/react ``` Always run `bun patch ` first. It ensures the package folder in `node_modules/` contains a fresh copy of the package with no symlinks or hardlinks to Bun's cache. If you skip it, you might end up editing the package globally in the cache. #### Step 2. Test your changes locally `bun patch ` makes it safe to edit `` in `node_modules/` directly, while preserving the integrity of Bun's [Global Cache](/pm/global-cache). It works by re-creating an unlinked clone of the package in `node_modules/`. `bun patch --commit ` then diffs that clone against the original package in the Global Cache. #### Step 3. Commit your changes Once you're happy with your changes, run `bun patch --commit `. Bun generates a patch file in `patches/`, updates your `package.json` and lockfile, and starts using the patched package: ```bash terminal icon="terminal" # you can supply the path to the patched package bun patch --commit node_modules/react # ... or the package name and optionally the version bun patch --commit react@17.0.2 # choose the directory to store the patch files bun patch --commit react --patches-dir=mypatches # `patch-commit` is available for compatibility with pnpm bun patch-commit react ``` ---