使用 patch-package 来科学修改 node_modules 里的文件

当我们使用npm包时,需要修改部分源码做自定义功能,但是直接修改node_modules里面的文件,重新安装包后做的修改就没有了。一般常用办法有两个:

  1. 将代码下载到本地,修改后手动引入
  2. fork别人的代码到自己仓库,修改后,从自己仓库安装

但是这样做比较麻烦,而且更新不方便。我们可以使用 patch-package 来管理修改

以 hexo-theme-next 为例

  1. 修改 node_modules 里面的代码

  2. 安装patch-package:npm i patch-package --save-dev

  3. 执行命令:npx patch-package hexo-theme-next

第一次使用 patch-package 会在项目根目录生成 patches 文件夹,里面有修改过的文件 diff 记录

当这个包被重新安装后,可以使用如下方式让修改生效

方式一:执行命令:git apply --ignore-whitespace patches/hexo-theme-next+8.0.1.patch

方式二:在 package.json,新增命令 postinstall:

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

执行:npm run postinstall

该命令也会在每次 npm install 时自动执行