patch-package基本用法

patch-package lets app authors instantly make and keep fixes to npm dependencies. It’s a vital band-aid for those of us living on the bleeding edge.

Usage

Making patches

First make changes to the files of a particular package in your node_modules folder, then run

bash
1
yarn patch-package package-name

or use npx (included with npm > 5.2)

bash
1
npx patch-package package-name

where package-name matches the name of the package you made changes to.

If this is the first time you’ve used patch-package, it will create a folder called patches in the root dir of your app. Inside will be a file called package-name+0.44.0.patch or something, which is a diff between normal old package-name and your fixed version. Commit this to share the fix with your team.

Options

  • --create-issue

    For packages whose source is hosted on GitHub this option opens a web browser with a draft issue based on your diff.

  • --use-yarn

    By default, patch-package checks whether you use npm or yarn based on which lockfile you have. If you have both, it uses npm by default. Set this option to override that default and always use yarn.

  • --exclude <regexp>

    Ignore paths matching the regexp when creating patch files. Paths are relative to the root dir of the package to be patched.

    Default value: package\\.json$

  • --include <regexp>

    Only consider paths matching the regexp when creating patch files. Paths are relative to the root dir of the package to be patched.

    Default value: .*

  • --case-sensitive-path-filtering

    Make regexps used in –include or –exclude filters case-sensitive.

  • --patch-dir

    Specify the name for the directory in which to put the patch files.

Updating patches

Use exactly the same process as for making patches in the first place, i.e. make more changes, run patch-package, commit the changes to the patch file.

Applying patches

Run patch-package without arguments to apply all patches in your project.

Options

  • --error-on-fail

    Forces patch-package to exit with code 1 after failing.

    When running locally patch-package always exits with 0 by default. This happens even after failing to apply patches because otherwise yarn.lock and package.json might get out of sync with node_modules, which can be very confusing.

    --error-on-fail is switched on by default on CI.

    See https://github.com/ds300/patch-package/issues/86 for background.

  • --reverse

    Un-applies all patches.

    Note that this will fail if the patched files have changed since being patched. In that case, you’ll probably need to re-install node_modules.

    This option was added to help people using CircleCI avoid an issue around caching and patch file updates but might be useful in other contexts too.

  • --patch-dir

    Specify the name for the directory in which the patch files are located

Author

Runcheng XIA

Posted on

2024-07-15

Updated on

2024-07-21

Licensed under

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×