修改 node_modules 依赖包源码,利用 patch-package 制作该 npm 模块包的补丁

作者: tww844475003 分类: 前端开发 发布时间: 2021-12-17 23:42

在日常开发中经常会遇到,npm依赖模块升级后有点小问题或者不符合我们的场景。

通常的解决方案,是提交一个issue或者PR,等待作者修改,又或者copy源码到本地,修改依赖指向本地。

这两种方案,都有明显的缺点,不是等待时间太久,就是太过暴力。

这里推荐一个新的方案:patch-package 做个临时补丁

patch-package适用于对npm包简单的修改,它能在不copy源码修改依赖的前提下,将修改记录下来,利用git进行管理,保证修改在组内小伙伴间一致。

  • 安装 patch-package
npm i patch-package -S
  • 制作补丁

下面我们用 systemjs 这个模块做为案例

安装 systemjs

npm i systemjs -S

修改 node_modules 源码包

// node_modules/systemjs/dist/system-node.cjs
// 添加测试代码

function addCodeTest() {
  return 'https://www.ifrontend.net/'
}
  • 生成补丁
npm i patch-package -S

同时会发现根目录生成了一个补丁包

到目前为止补丁包就已经打好了,那怎么运用。因为你这改的源码,只是在你本机生效,如何共享给你的小伙伴,让他们重新安装 systemjs 模块,同样能有新加的函数了。

// package.json 新增
"scripts": {
    "postinstall": "patch-package"
 },

当然那个补丁包也是必不可少的

这样小伙伴拿到你的工程代码,重新 install 就可以了

npm install 后,会执行该命令 postinstall 替换补丁源码

注意:

patch 是锁定版本号的,如果升级了版本,patch 内容将会失效,需要在 package.json 锁定补丁模块的版本号

"dependencies": {
    "systemjs": "6.11.0"
 }

这里以 systemjs 为例 ,锁定的是 6.11.0 版本

前端开发那点事
微信公众号搜索“前端开发那点事”

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注