vue修改node_modules打补丁步骤和注意事项

当我们使用 npm 上的第三方依赖包,如果发现 bug 时,怎么办呢?

  想想我们在使用第三方依赖包时如果遇到了bug,通常解决的方式都是绕过这个问题,使用其他方式解决,较为麻烦。或者给作者提个issue,然后等待作者的修复,等待的时间不可控。那么这时候是不是就可以借助patch-package自己动手去修复该bug,感觉是不是很棒,并且还可以在第三方依赖包上,根据业务需求扩展能力。

  当然最好还是扩展一些通用性比较高的能力,如果是比较通用且该能力大多数开发者都有这种诉求的话可以给第三方依赖包提个PR。参与开源项目是不是简单了起来了~(不要在魔改的路上越走越远)

  挺多文章有介绍的,可以参考:

1、vue-pdf问题解决及patch-package简介:https://www.jianshu.com/p/d1887e02f8d6

2、使用“黑魔法”优雅的修改第三方依赖包:https://zhuanlan.zhihu.com/p/412753695

3、使用patch-package定制node_modules中的依赖包:https://blog.csdn.net/qq_32429257/article/details/111051217

  具体应用场景就不多说了,可以自己看文章,其实还是有蛮多需求的,这里主要记录一下具体使用步骤。

patch-package的使用

Step1:安装

使用npm安装

npm i patch-package

推荐使用yarn安装

yarn add patch-package postinstall-postinstall

Step2:修改package.json文件

package.json的scripts中声明了一系列的npm脚本命令,如下:(参考资料:http://caibaojian.com/npm/misc/scripts.html

  • prepublish: 在包发布之前运行,也会在npm install安装到本地时运行
  • publish,postpublish: 包被发布之后运行
  • preinstall: 包被安装前运行
  • install,postinstall: 包被安装后运行
  • preuninstall,uninstall: 包被卸载前运行
  • postuninstall: 包被卸载后运行
  • preversion: bump包版本前运行
  • postversion: bump包版本后运行
  • pretest,test,posttest: 通过npm test命令运行
  • prestop,stop,poststop: 通过npm stop命令运行
  • prestart,start,poststart: 通过npm start命令运行
  • prerestart,restart,postrestart: 通过npm restart运行

可以看到依赖包在安装完之后会执行postinstall命令

所以我们在package.json的scripts里面增加:"postinstall": "patch-package"

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

修改 package.json,新增命令 "postinstall": "patch-package",如图:

Step3.执行命令
npx patch-package 修改的文件夹名字 此处文件夹名字指 node_modules 中下的文件夹名。

比如如:npx patch-package pdfjs-dist 这里的 pdfjs-dist 就是我们修改的文件的主文件夹名。

Step4.生成补丁
命令执行结束后查看根目录下是否生成了 patches 文件夹,patches文件夹是自动生成的,如图:

Step5.npm install 验证
在项目里 npm install 验证,是否有补丁包的提示,有就表示打补丁成功!

注意事项1:

1、自动部署中不生效
报错信息
npm WARN lifecycle nuxt-base-pc@1.0.0~postinstall: cannot run in wd nuxt-base-pc@1.0.0 patch-package (wd=/data/servers/jenkins/workspace/nginx)
解决办法
在项目根目录添加.npmrc 文件,写入:
unsafe-perm = true

注意事项2:

  1. patch是锁定版本号的,如果升级了版本,patch内容将会失效,最好在package.json能够锁定版本号。
  2. 魔改的同时,也局限了升级的能力,尽量还是去提issue和PR。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 不建议直接修改node_modules文件,因为这会影响到整个项目的稳定性和可维护性。如果需要修改某个依赖的代码,可以通过以下方式进行: 1. 在项目的package.json文件中,找到需要修改的依赖,将其版本号改为本地修改后的版本号,然后执行npm install命令,重新安装依赖。 2. 将需要修改的依赖下载到本地,进行修改后,再将其发布到npm仓库,然后在项目中使用新版本的依赖。 3. 如果需要修改的依赖是自己开发的,可以将其作为本地模块引入到项目中,然后进行修改。 ### 回答2: Vue作为前端框架的一种,依赖于Node.js实现项目构建、打、运行等功能。因此,Vue的管理及配置文件都存在于node_modules文件夹下。但是,由于Vue项目的个性化开发需求,需要修改其中的某些文件。那么,如何修改node_modules文件夹下的文件呢?方法如下: 1. 首先,需要找到要修改的文件所在的路径。例如,要修改的文件是bootstrap-vue的nav.vue文件,则该文件存放路径为“node_modules/bootstrap-vue/src/components/nav/nav.vue”。 2. 在修改之前,需要备份该文件。将原文件复制一份,命名为nav-backup.vue,作为备份文件存放在src文件夹中。 3. 然后,进入node_modules/bootstrap-vue文件夹,在该文件夹下打开命令行窗口。 4. 在命令行窗口中输入“npm install cnpm -g”,等待安装完成。 5. 然后,输入“cnpm install”命令,等待依赖安装完成。 6. 安装完成之后,进行修改,并保存修改。例如,在nav.vue文件中,将template中的一个div修改为p,则保存修改后的nav.vue文件。 7. 将备份文件nav-backup.vue文件复制到src/components/nav/下,以避免node_modules的内容被Vue官方升级覆盖。 8. 最后,运行“npm run build”进行打,查看是否存在修改。如果修改成功,则在打后的项目中体现出来。 总之,修改node_modules文件需要一定的技术实力和经验,需要谨慎操作。同时,也要注意备份原文件,以便避免操作失误而导致的后果。 ### 回答3: Vue是现在非常流行的前端框架,而node_modules则是Vue中一个重要的文件夹,它含了大量的依赖模块以及插件,并且是Vue的核心文件夹之一。在Vue项目中,如果我们需要对这个文件夹进行修改,则需要进行一定的操作。 首先,我们需要了解node_modules是一个由npm管理的文件夹,里面含了我们项目中所使用的各种依赖。如果我们需要修改这些依赖的话,那么我们需要更新package.json文件中的对应依赖版本号,然后再使用npm install命令重新安装这些依赖。这样就可以更新node_modules文件夹中的内容。 但是,有时候我们需要对某个依赖进行一些特殊的修改,而这种修改并不一定能够通过版本号的更新来实现。在这种情况下,我们可以手动对node_modules文件夹进行修改。 首先,我们需要先确定需要修改的依赖所在的文件夹路径。然后,在终端中输入cd命令进入该文件夹路径,即可进入该依赖的文件夹。在该文件夹中,我们可以对其中的文件进行修改,比如添加或删除某个功能等。 需要注意的是,在手动修改node_modules文件夹时,应该非常谨慎。首先,我们需要备份原始文件,以防止在修改过程中误删或误修改导致项目无法正常运行。其次,我们还需要注意,手动修改依赖可能会改变依赖的行为,进而导致项目运行出现错误或者安全性问题等。所以,在修改node_modules文件夹前,一定要考虑清楚,尽量使用npm来更新依赖。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值