A better and interactive pnpm patch.
npx pnpm-patch-i package-nameThis CLI wraps with pnpm patch and provides a better interactive experience:
- Have the patch dir under your local
node_modules/folder instead of a global temp folder - More human-friendly folder name instead of random string
- Open the editing folder in your editor via
launch-editor - Wait for your changes and automatically run
pnpm commit-patch <dir>for you - Always runs at where
pnpm-lock.yamlis located
It's also possible to apply a patch directly from a directory, for example:
npx pnpm-patch-i vite ../vite/packages/viteYou can also use --build (-b) flag to invoke npm run build in the source directory before applying the patch.
When merging the source package.json into the patched package, workspace: and catalog: dependency specifiers are resolved automatically:
workspace:*/workspace:^/workspace:~/workspace:<range>→ reuses the version already present in the patched package's existing entry.catalog:/catalog:<name>→ looked up in the source repo'spnpm-workspace.yamlcatalog definitions.
Note
If the source package is in a monorepo with custom linking, directly applying the patch from a directory might result in copying the linking where the current project might not be able to resolve.
In that case, it's recommended to pack the source package into a tgz file and apply the patch from the tgz file with --pack (-p) flag.
MIT License © 2023 Anthony Fu