你知道 node_modules 这样修改更合理吗 ?

85 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第5天,点击查看活动详情

前言

通常情况下,在开发过程中,我们不应该修改 node_modules 中的任何内容,但偶尔会出现一些意想不到的问题导致我们需要对其进行修改,比如:我在使用百度的低代码框架amis时,打包报错,提示amis包中一些css文件缺少分号的问题

image.png

方式一

直接修改 node_modules

根据报错提示顺藤摸瓜对node_modules中的amis包直接修改,问题很快得到解决。

弊端:再次安装依赖时,之前修改的代码丢失,恢复原状;只有自己可以用修改过的本地node_modules,其他人无法使用

方式二

独立维护需要改动的包

可以将 amis 包复制一个,将代码修改为自己所需要的之后,推送到npm上(上传npm具体步骤可参考这篇文章),项目中不再需要之前的amis包,安装刚刚修改过的新包

这是比较常用的一种方式,感觉增加了维护成本,其实并没有多少,修改后基本长时间不会再进行改动

方式三

patch-package

一个用来修改node_modules中包的代码的工具

使用方式:
  1. 安装 patch-package
npm i patch-package
  1. 修改 node_modules

修改对应的包之后,执行

npx patch-package `包`

这时,根目录下会出现 patches 文件夹,里面的内容是对原始包进行修改后的补丁。

  1. 自动执行

package.jsonscript中增加

"postinstall": "patch-package"

作用:当执行npm install的时候,会自动执行npm run postinstall这个命令,也就是执行patch-package,这时候就会去读取上面提到的 patches目录,并将那些补丁打到对应的包里,达到同步修改代码的效果

  1. 提交代码

以上操作执行完成后,不要忘了将代码提交到远程仓库,让其他人同步你修改后的代码,以防修改丢失。