手动修改 node_modules 中的依赖包(patch-package)
背景
【手动修改 node_modules 中的依赖包(patch-package)】首先,问题是这样发生的,在项目中使用pdfvuer第三方插件,要将已经盖章成功的pdf显示出来,这个时候发现文章可以好好的显示出来,但是公司的签章怎么也显示不出来,这个时候终于找到了解决办法!!但是显示签章的修改代码在依赖包node_modules路径下,毕竟修改在node_modules下的文件每次npm install都需要手动修改。瞬间我就开始难受了,难受难归难受但还是要想办法解决滴
文章图片
起初想到的方案有两种:
- fork别人的代码到自己仓库,修改后,从自己仓库安装这个插件。
- 下载别人代码到本地,放在src目录,修改后手动引入。这样做也有很多不便,比如自己单独封装组件既繁琐又耗时,而且还会造成项目看起来比较臃肿。
在这种情况下我转头又开始了我的求知之路。。。然后我就发现了一个高大上的解决方案用 patch-package 修改 node_modules 中的依赖包。
解决方案
- 通过命令安装 patch-package
npm install patch-package --save-dev
- 修改项目根目录下的 package.json 文件
在 package.json 文件中的 scripts 中加入 "postinstall": "patch-package"
文章图片
- 手动修改 node_modules 依赖包中的源码
文章图片
- 手动执行命令创建 npx patch-package package-name 补丁文件
npx patch-package package-name
其中package-name是指要进行修改的依赖包名称。执行该命令后会在项目根目录中自动创建一个 patches 文件夹,该文件夹中就会出现一个 package-name+version.patch 的补丁文件。如图:
文章图片
举个示例:我要修改pdfjs-dist下的文件 因此我所执行的命令就是:npx patch-package pdfjs-dist
文章图片
- 测试补丁包是否有效
手动删除项目中的node_modules文件(强制删除node_modules文件夹:rimraf node_modules),并重新执行npm install命令安装node_modules依赖包。安装成功后查看你之前修改的 node_modules 依赖包中的文件,查看你修改的代码是否依然存在,如果之前修改代码依然存在即表明补丁文件已经生效,如果你之前修改的代码不存在即表明补丁文件没有生效。
推荐阅读
- Node.js中readline模块实现终端输入
- java|java b2b2c shop 多用户商城系统源码- config 修改配置
- iOS富文本为html时,修改默认字体颜色
- react-navigation|react-navigation 动态修改 tabBar 样式
- 8、Flask构建弹幕微电影网站-搭建后台页面-密码修改、主页控制面板
- Promise|Promise 异步控制流
- Nginx进阶(1)——nginx本地代理配置访问node服务
- 脚手架开发
- 带你了解NodeJS事件循环
- javascript|vue使用js-xlsx导出excel,可修改格子样式,例如背景颜色、字体大小、列宽等