通过patch-package创建补丁修改node_modules依赖下的源码
简述
node_modules下是依赖源码,打包的时候是不会打包进去的。但有时候我们需要修改依赖的源码,这个时候,其他人使用npm install会拉取最新的依赖,而把修改的源码覆盖。
解决
1、将整个库提到node-modules外面来,但是这样会使项目十分的臃肿
2、将这部分源码提出来重新封装,这个方法不错,但是需要一定的时间成本,也不太理想
3、这里推荐使用patch-package创建补丁的方法,通过这种方法后,别人使用npm install,就不会有覆盖的风险了。
1、安装patch-package
// 开发测试环境
npm install patch-package --save-dev
// 生产环境
npm install patch-package --save
2、修改node_modules源码
3、在package.json,将scripts中加入"postinstall": "patch-package",这个是为了npm install的时候自动为依赖包打上我们改过的依赖
"scripts": {
"postinstall": "patch-package"
},
4、修改完依赖后,创建补丁
npx patch-package 依赖名称
// 例如
npx patch-package echarts
这个时候,根目录下会创建一个叫patches的文件,下面的文件就是补丁文件,里面是你修改依赖的最新源码。
将node_modules删掉,使用npm i 重新安装依赖,再次打开你修改的地方,就会发现并没有被覆盖。
参考:https://zhuanlan.zhihu.com/p/453771807
githab:https://github.com/ds300/patch-package