最近一个项目,有用到一个 npm 包,发现有 bug,只能直接去 node_modules 修改里面的文件,但是重新安装依赖就没有了,不便于团队协作。虽然可以把代码拷贝到 src 目录,修改后手动引入,但提交时会出现一大坨与项目无关的代码,很不优雅。其实可以通过patch-package以打补丁的形式修改 npm 包,及时解决 bug。

安装

# npm
npm i patch-package

# yarn
yarn add patch-package postinstall-postinstall

你没有看错,使用yarn需要多安装一个包postinstall-postinstall
然后在 package.json 的 scripts 里加一行:

"scripts": {
  "postinstall": "patch-package"
}

使用

直接在项目根目录下的 node_modules 文件夹中找到要修改依赖包的相关文件,然后回到根目录执行:

# npm > 5.2
npx patch-package package-name

# yarn 
yarn patch-package package-name

package-name就是要修改的依赖包名

执行完成后,会在项目根目录的 patches 目录中创建补丁文件 package-name+0.44.0.patch(0.44.0 是版本号),里面有修改过的文件 diff 记录。这个补丁需要提交到代码仓库中。

大功告成,这样团队里的其他人安装依赖时,得到的就是修改后的包。

参考资料

https://github.com/ds300/patch-package