我的GitHub
0%

无星的前端之旅(十九)-临时修改npm库

背景

在开发过程中,偶尔会遇到一些问题,需要通过修改三方库才能解决。

一般遇到这种情况,我们会采取以下方式解决:

1.fork一份并修改,package.json指向fork的地址。

2.写一个shell脚本,在拉完包后执行脚本替换。

第一个方法太重了,并且在主库的更新合并上比较麻烦,需要手动去合并。

第二个方法需要写shell脚本,投入产出比不高,还经常忘记执行。

但自从发现了如下方法,临时修改npm包再也不是事了

使用patch-packagepostinstall-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.jsonscripts添加

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

这样每次yarn或者npm install完成以后,都会依照补丁文件自动修正npm包内容。

但是要注意,lock文件是需要加入版本管理的,因为布丁会指定具体版本

我是阿星,阿星的阿,阿星的星!