难免会依赖到一些控件,但是又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 装上这个插件,就会同步这个 自定义修改。
参考: