用 patch-package 给 npm 打补丁

前言

上周看到别人分享的文章,patch-package可以给项目下的 npm 包打补丁。这样我们就可以无需给 npm 提 issues 了,甚至有些包已经不再维护了(无需 fork 修改)。

安装

1
2
3
npm i patch-package --save-dev
//或
yarn add --dev patch-package postinstall-postinstall

修改 npm 源文件

找到 node_modules/文件夹下的包

testeeeee

然后修改你需要调整的内容。

打补丁

在修改依赖包内容后,就可以运行 patch-package 创建 patch 文件了

1
2
3
npx patch-package package-name   # 使用npm

yarn patch-package package-name # 使用yarn

运行后通常会在项目根目录下的 patches 目录中创建一个名为 package-name+version.patch 的文件。将该 patch 文件提交至版本控制中,即可在之后应用该补丁了

部署

最后还需要修改 package.json 的内容,在 scripts 中加入”postinstall”: “patch-package”。

1
2
3
"scripts": {
"postinstall": "patch-package"
}

后续运行 npm install 或是 yarn install 命令时,便会自动为依赖包打上我们编写的补丁了

后记

我的项目改的 @femessage/update-popup ,这个包是做版本发布提示用的,但是我们不想每次手动更改版本,只根据 git tag 同步就可以了。正好碰到这个 npm 组件。打了补丁后,只需要 Jenkins 获取 git tag 信息就可以直接更新版本