npm之pactch-package

921 阅读1分钟

官方链接: www.npmjs.com/package/pat…

一句话解释

定制修改node_modules下的npm依赖包(场景参见参考链接1前言)

修改流程

  1. 修改node_modules依赖包(以包名为XXX为🌰)
  2. 使用npx patch-package xxx创建.patch文件
  3. 项目依赖安装patch-package包(使用npm安装只需patch-package使用yarn安装要额外安装postinstall-postinstall)
  4. 在package.json的scripts中增加"postinstall": "patch-package"
  5. 将项目目录中patchs下的xxx+版本号.patch添加到git中, 这样别的同学再拉取项目并安装依赖时, 就能看到你的修改内容啦.

例子

egg-mongoose@3.3.0版本为例. 由于egg-mongoose默认使用app/model文件夹来存放的实体类, 出于特殊需求(比如:项目中model文件夹被占用, 需要指定一个新的文件夹)需要增加modelDir配置项. OK, 接下来, 就操练起来:

  1. 进入node_modules/egg-mongoose
  2. 修改config/config.default.js增加modelDir: 'app/model',配置项
  3. 修改lib/mongoose.js添加读取modeDir配置逻辑
  4. 本地执行npx patch-package egg-mongoose
  5. 执行结束后会在项目目录中生成patches/egg-mongoose+3.3.0.patch
  6. 修改应用目录config/config.default.jsmongoose配置项增加modelDir: 'app/mongo'(这里以'app/mongo' 为例, 当然也可以指定其他目录了)
  7. package.json scripts中增加"postinstall": "patch-package"
  8. yarn add patch-package postinstall-postinstall -D
  9. 提交至版本控制器

题外话

如果是开源项目, 我们也可以通过提交PR, issue来达到同一目的(需要开源项目维护者review PR, 反馈会有时延).

上述例子PR

参考链接: