背景
在开发过程中,偶尔会遇到一些问题,需要通过修改三方库才能解决。
一般遇到这种情况,我们会采取以下方式解决:
1.fork一份并修改,package.json指向fork的地址。
2.写一个shell脚本,在拉完包后执行脚本替换。
第一个方法太重了,并且在主库的更新合并上比较麻烦,需要手动去合并。
第二个方法需要写shell脚本,投入产出比不高,还经常忘记执行。
但自从发现了如下方法,临时修改npm包再也不是事了
使用patch-package
和postinstall-postinstall
1.集成
1 | yarn add patch-package postinstall-postinstall -D |
2.下载包
1 | yarn |
3.修改文件
找到node_modules中需要修改的文件,直接修改它
4.创建布丁
修改完文件以后,执行如下命令,package-name是修改的包名
1 | npx patch-package package-name |
执行完毕以后,会在项目根目录下生成一个patches目录,目录中生成文件:package-name+version.patch
该文件描述了修改内容
5.每次拉包自动执行替换
package.json
中scripts
添加
1 | "scripts": { |
这样每次yarn
或者npm install
完成以后,都会依照补丁文件自动修正npm包内容。
但是要注意,lock文件是需要加入版本管理的,因为布丁会指定具体版本