背景
无论是 nodejs
开发还是普通的 js
开发,都少不了使用 npm
,好用高效的同时,也存在一个问题——如果使用的第三方依赖库不能满足业务需求,或者存在一些还没被修复的 bug,这时难免需要修改 node_modules
目录下依赖库的代码。
但接踵而来的问题时,修改了 node_modules
目录下依赖库的代码,没法分享给团队中的其他小伙伴(正常情况下我们的 git 都会忽略这个目录,不会跟踪这个目录下的代码变动),而且一旦重新 npm install
又要重新修改,非常麻烦。
目前比较流量的有两中方案:
- 使用
webpack alias
实现替换文件 - 使用 patch-package
个人感觉用 patch-package 会更优雅一点,今天核心也是介绍这种方法
patch-package
使用步骤如下:
npm i patch-package --save-dev
,将这个库安装到本地- 项目的根目录
package.json
下,添加npm postinstall
,以便每次执行npm install
时能合进所有的 patch 文件"scripts": { "postinstall": "patch-package" }
- 开开心心修改
node_modules
目录下依赖库的代码- 比如,我修改了
taro-ui
的AtIndexes
组件的一个小细节如下:
- 比如,我修改了
- 执行
npx patch-package <package-name>
- 如上,修改了
taro-ui
的AtIndexes
组件后,执行npx patch-package taro-ui
- 执行完后,会在本地生成一个
patches
目录,里面有对应的文件,长这样:
- 如上,修改了
patches
这个目录以及里面的文件可以使用 git 跟踪,分享给团队的其他人- 当其他人使用
npm install
安装第三方依赖库时,patch-package 会根据patches
目录下的文件,将你改好的代码同步跟新到node_modules
目录下修改过的依赖库的代码
- 当其他人使用
就是这样简单高效~