pnpm如何修改node_modules中的内容

1,056 阅读1分钟

前言

pnpm7.4.0更新了关于如何使用补丁的功能,关于如何在pnpm中使用像npm的 patch 一样的功能。

先说说应用场景,举个实际的例子吧:

我在项目中使用了一个开源的组件,但是在使用某些功能时居然报错了,我们其实可以通过修改它的源码来修复这个bug。

但是问题就来了,大家都知道node_modules是不会上传到git中的(太大),所以该怎么记录下来这次的修改呢,总不能每次拉一下代码npm install之后都要去源码里改一下吧。

所以就有了patch这个功能:

npx patch-package

先看看在npm中的具体使用:

  1. 安装需要的依赖:npm i patch-package --save-dev
  2. 指定修改的依赖生成patch文件夹:npx patch-package <pkg name>
  3. 提交至git
  4. package.jsonscript字段中添加如下字段及内容:
{
    "patch":"patch-package"
}

下次npm i 后, 运行一次即可

pnpm中的具体使用

官方文档

  1. 修改源文件内容后,输入 pnpm patch <pkg name> ,会生成一个临时的目录

image.png

  1. 进入这个临时目录,这里面的文件就是要修改的包的文件,在这里开始你的修改

  2. 修改完后,使用 pnpm patch-commit <temp dir>,这里的temp dir 是上面的临时目录

image.png

  1. 项目根目录会生成一个patchs文件夹

image.png

  1. pnpm会自动向package.json中添加如下内容

image.png

完成!

注意

这个功能在pnpm 7.4.0之后才被添加,使用时注意pnpm的版本。

补充 npm和pnpm的测试代码,我放到github了,

github.com/LIBai11/pat…

启动后在输出区看到

image.png 说明修改成功~