前言
相信有过一些前端开发经验的同学都有遇到过使用的npm包有bug,或者npm包只要再修改一点点就能满足自己的需求这样尴尬的情况。如果给包作者提需求,作者一般也不会马上给你修改,这时候就需要使用各种修改npm包源码的骚操作了。
通常有四类做法:单个文件修改法拷贝覆盖法
修改引用法
整个项目copy法直接引用法
发布私包法
外部代码修改法
最优解patch-package大法
先直接讲最优解吧
patch-package是一个用来给其他npm包打补丁的包,实际原理也是在本工程保存一份修改的代码,只不过不是用全量代码的形式保存,而是保存了git diff的结果,节省了代码体积
用法如下:npm i -S patch-package安装patch-package
直接在node_modules下修改需要修改的包源码
执行npx patch-package 包名, patch-package会将当前node_modules下的源码与原始源码进行git diff,并在项目根目录下生成一个patch补丁文件
后续只要执行npx patch-package命令,就会把项目patches目录下的补丁应用到node_modules的对应包中,这个执行时机一般可以设置为postinstall这个勾子
"scripts": {
"postinstall": "patch-package"
}
为什么是最优解?
毕竟是专门团队开发的工具,在能实现目的的前提下,该考虑的都帮你考虑好了,比如这个包的版本升级了怎么办