持久化修改node_modules内代码

2023-07-26 07:29

难免会依赖到一些控件,但是又34年没更新的了,定位问题后,需要修改依赖的控件代码。

直接修改node_modules内依赖的项目文件,但是无法做到同步给CI,或同事。如果只修改node_modules,下一次check出,npm i 后修改就会丢失。

但可以使用patch-package这个工具,可以做到修改node_modules内依赖的项目文件。

patch-package会额外生成一个patches的文件在工程里面,这样可以上传svn 持久化到自己项目的,每次npm i,他都会修改node_modules,达到修改依赖项目的目的。

这边修改的是mpvue-calendar-rzt项目。

在小程序中,ios的手机会月份显示漂移,查看代码里面判断 isBrow = !!window;

由于我的npm版本是12,直接装最新的 7.0版会出现

node_modules\yaml\dist\compose\composer.js:33
if (prelude[i + 1]?.[0] !== '#')

所以指定patch-package版本为  6.4.7

然后执行在项目根目录执行> npx patch-package mpvue-calendar-rzt 。就会提示已经

Defaulting to using npm
You can override this setting by passing --use-yarn or deleting
package-lock.json if you don't need it

• Creating temporary folder
• Installing mpvue-calendar-rzt@1.0.3-beta with npm
• Diffing your files with clean files
✔ Created file patches/mpvue-calendar-rzt+1.0.3-beta.patch

💡 mpvue-calendar-rzt is on GitHub! To draft an issue based on your patch run

npx patch-package mpvue-calendar-rzt --create-issue


这个时候,项目下会多出一个patchs文件夹,里面就是修改的补丁。提交这个patchs和 修改后的package.json。

其他人员下载后,npm i 装上这个插件,就会同步这个 自定义修改。

参考:

https://www.jianshu.com/p/71bee12865df