前言
pnpm7.4.0更新了关于如何使用补丁的功能,关于如何在pnpm中使用像npm的 patch
一样的功能。
先说说应用场景,举个实际的例子吧:
我在项目中使用了一个开源的组件,但是在使用某些功能时居然报错了,我们其实可以通过修改它的源码来修复这个bug。
但是问题就来了,大家都知道node_modules是不会上传到git中的(太大),所以该怎么记录下来这次的修改呢,总不能每次拉一下代码npm install之后都要去源码里改一下吧。
所以就有了patch这个功能:
npx patch-package
先看看在npm中的具体使用:
- 安装需要的依赖:
npm i patch-package --save-dev
- 指定修改的依赖生成patch文件夹:
npx patch-package <pkg name>
- 提交至git
- 在
package.json
的script
字段中添加如下字段及内容:
{
"patch":"patch-package"
}
下次npm i 后, 运行一次即可
pnpm中的具体使用
- 修改源文件内容后,输入
pnpm patch <pkg name>
,会生成一个临时的目录
-
进入这个临时目录,这里面的文件就是要修改的包的文件,在这里开始你的修改
-
修改完后,使用
pnpm patch-commit <temp dir>
,这里的temp dir
是上面的临时目录
- 项目根目录会生成一个patchs文件夹
- pnpm会自动向
package.json
中添加如下内容
完成!
注意
这个功能在pnpm 7.4.0之后才被添加,使用时注意pnpm的版本。
补充 npm和pnpm的测试代码,我放到github了,
启动后在输出区看到
说明修改成功~