Skip to content
0

package.json

某些情况下很好用的配置

pnpm override

设置 overrides 之后,执行 pnpm i,即可以让原本安装的依赖变为自己修改后的依赖,包括版本替换,甚至是包替换,还可以指定 registry

{
  "pnpm": {
    "override": {
      "bar@^2.1.0": "3.0.0", // 强制将 bar 的版本固定为 3.0.0
      "jsdom": "happy-dom@^12.10.3",
      "qar@1>zoo": "2" // 强制将 qar@1 的依赖 zoo 版本固定为 2
    }
  }
}

pnpm patch

有点时候,我们发现我们的某个 dependency 有 Bug,或者内部的功能与预期的稍有偏差。此时,手动修改 node_modules 下面的包的内容可能可以短暂解决你的问题,但是无法持续,重新安装依赖后,修改就被删除了

pnpm patch 可以将这种修改记录保留下来,每次执行 pnpm i 的时候,都应用这个修改,具体方式如下,假设我们要 patch vue 这个包

$ pnpm patch vue
You can now edit the following folder: /private/var/folders/pz/dncst_js0f19w1t8hwfv13mh0000gn/T/9c833ee4ec07ca8e1dc55649652081e7

Once you're done with your changes, run "pnpm patch-commit /private/var/folders/pz/dncst_js0f19w1t8hwfv13mh0000gn/T/9c833ee4ec07ca8e1dc55649652081e7"

然后我们打开它临时生成的项目,修改成我们预期的内容

修改完毕后执行上面提升的:

$ pnpm patch-commit /private/var/folders/pz/dncst_js0f19w1t8hwfv13mh0000gn/T/9c833ee4ec07ca8e1dc55649652081e7

然后 pnpm 会在 package.json 中添加如下记录,并在当前项目生成一个 patches/vue@3.3.12.patch 文件,里面就是修改 diff 的记录

{
  "pnpm": {
    "patchedDependencies": {
      "vue@3.3.12": "patches/vue@3.3.12.patch"
    }
  },
}

也可以使用 antfu/pnpm-patch-i 获得更好的交互

Released under the MIT License.