官方链接: www.npmjs.com/package/pat…
一句话解释
定制修改node_modules下的npm依赖包(场景参见参考链接1前言)
修改流程
- 修改node_modules依赖包(以包名为XXX为🌰)
- 使用npx patch-package xxx创建
.patch文件 - 项目依赖安装patch-package包(使用npm安装只需patch-package 或 使用yarn安装要额外安装postinstall-postinstall)
- 在package.json的scripts中增加
"postinstall": "patch-package" - 将项目目录中patchs下的xxx+版本号.patch添加到git中, 这样别的同学再拉取项目并安装依赖时, 就能看到你的修改内容啦.
例子
以egg-mongoose@3.3.0版本为例. 由于egg-mongoose默认使用app/model文件夹来存放的实体类, 出于特殊需求(比如:项目中model文件夹被占用, 需要指定一个新的文件夹)需要增加modelDir配置项. OK, 接下来, 就操练起来:
- 进入node_modules/egg-mongoose
- 修改config/config.default.js增加
modelDir: 'app/model',配置项 - 修改lib/mongoose.js添加读取modeDir配置逻辑
- 本地执行
npx patch-package egg-mongoose - 执行结束后会在项目目录中生成
patches/egg-mongoose+3.3.0.patch - 修改应用目录
config/config.default.js中mongoose配置项增加modelDir: 'app/mongo'(这里以'app/mongo' 为例, 当然也可以指定其他目录了) - package.json scripts中增加
"postinstall": "patch-package" yarn add patch-package postinstall-postinstall -D- 提交至版本控制器
题外话
如果是开源项目, 我们也可以通过提交PR, issue来达到同一目的(需要开源项目维护者review PR, 反馈会有时延).
参考链接: