背景
我们常常会遇到一个问题,网上现有的开源插件并不能满足我们实际项目的预期。但如果只需要对源码进行小小的改动就能满足我们的需求,那改源码一定是首选
前言
修改别人的源码往往有这几个方式:
- 直接在项目的node_modules下找到插件的源码直接修改;
- 优点:简单直接、快速见效
- 缺点:不能持久化,一旦重新安装就失效;不方便团队成员使用修改后的代码
- 去github上fork代码到自己的仓库进行修改,并将自己修改过后的代码发布到npm上使用;
- 优点:团队成员都可以使用到这份修改的代码
- 缺点:麻烦、十分麻烦
显而易见,上面这两种方法既不优雅,也不可靠。作为程序员的我们岂能被这事儿给难住,开源社区早已给我们准备好了解决方案:patch-package
步骤
假设已经有了一个项目(比如angular),同时安装了一个叫gwm的包(安装命令npm i gwm
),现在我想对node_modules中的gwm进行修改。
npm方式(经过检验)
- 安装patch-package,命令
npm i patch-package --save-dev
- 自行修改node_modules文件
package.json中添加命令!!!
"scripts": {
"postinstall": "patch-package"
}
运行
npx patch-package package-name
,比如本文中可以运行npx patch-package gwm
,此时在项目中应该会生成一个patches的文件夹,如下图
yarn方式(未经过检验)
- 安装patch-package和postinstall-postinstall,命令
yarn add patch-package、postinstall-postinstall -D
(比npm要多安装一个包) - 自行修改node_modules文件
package.json中添加命令!!!
"scripts": {
"postinstall": "patch-package"
}
运行
yarn patch-package package-name
,比如本文中可以运行yarn patch-package gwm
,此时在项目中应该会生成一个patches的文件夹,如下图