如何优雅的自动修改node_modules 中的依赖包内容?

news2024/11/15 11:37:41

使用 patch-package 自动修改 项目中node_modules中内容

  • 背景简介:我们在使用第三方依赖包时如果遇到了 bug,通常解决的方式都是绕过这个问题,使用其他方式解决,较为麻烦。或者给作者提个 issue 或者 PR,然后等待作者的修复。等待的时间不可控,此时就可以借助 patch-package 自己动手去修复该 bug,感觉是不是很棒。并且还可以在第三方依赖包上,根据业务需求扩展能力,但是问题在于,每当我们重新拉取项目时,需要重新对应修改,很是麻烦 。

  • patch-package 给开发者提供了通过打“补丁”的方式,使得重新安装依赖包时能够保留之前对第三方依赖包的修改的一种解决方案

    (既:修改一次node_modules文件,使用命令npx patch-package packagename生成对应缓存记录,提交至SVN/Git,后续其他人再次拉取项目,不用重新修改node_modules文件)

    具体步骤如下,当您拉取项目时可能会出现以下三种情况:

    • 情形一:项目拉取时,根目录已存在patches文件夹:拉取新的前端项目,并且根目录下存在patches文件夹时,请直接使用npm install下载对应依赖,并且不需要对上述三个node_modules中的文件进行修改,即可启动项目,正常启动。
      在这里插入图片描述
      此时项目中node_modules对应的文件会被自动更改。

    • 情形二:项目拉取时,根目录未存在patches文件夹

      • 例如:根目录未存在patches时,
        • 1.安装

          • npm i patch-package   //或者
            yarn add patch-package postinstall-postinstall
            
        • 2.修改 package.json

          • "scripts": {
                ***,
              +  "postinstall": "patch-package" 
             }
            
        • 3.修改依赖包源码(即文档上述对node_modules操作的步骤),此处以修改 node_modules\xlsx-style\中的文件为例,生成相应补丁。

          •   执行:npx patch-package xlsx-style 
              输出:
              patch-package 7.0.0
              • Creating temporary folder
              • Installing xlsx-style@0.8.13 with npm
              • Diffing your files with clean files
              ✔ Created file patches/xlsx-style+0.8.13.patch
            
          • 注意:此步骤需要先对node_modules中,需要进行修改的文件,先行修改后,再执行生成相应补丁步骤!否则会出现错误提示
            执行:npx patch-package xlsx-style
            输出:
            patch-package 7.0.0
            • Creating temporary folder
            • Installing xlsx-style@0.8.13 with npm
            • Diffing your files with clean files
            ⁉️  Not creating patch file for package 'xlsx-style'
            ⁉️  There don't appear to be any changes.
            
        • 4.查看根目录下patchesxlsx-style+0.8.13.patch内容是否已生成记录对应更改的文件

        • 5.将新修改/生成的 patches文件夹和package.json中的修改提交至SVN/Git(切记!)

    • 情形三: 项目拉取时,根目录已存在patches文件夹,但需要对node_modules中其他文件进行修改

      • 1.修改对应node_modules中的文件
      • 2.执行情形二中的3、4 步骤

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/638043.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

真有无限流量上网设备吗?必须是那种真无限流量、不限速的

提到无限流量,七八年前确实有这种说法,而且是官方说法,三大运营商卡套餐都有无限流量这一说。比如当时电信推出过一款99元/月流量无限用的手机卡套餐,移动运营商出过一款89元/月的类似产品,都是打着无限流量的标语&…

Android 13-SystemUI 屏幕左上角或者左上交显示绿色亮点,去掉该亮点

packages/SystemUI/src/com/android/systemui/privacy/PrivacyConfig.kt private const val DEFAULT_MIC_CAMERA false 改成false就好了

Randoop随机测试自动生成测试用例

什么是Randoop: Randoop是一个为JAVA单元测试生成测试用例的框架(生成器),它基于Junit格式为编译后JAVA字节码(classes)自动生成测试用例. Randoop通过反馈式的随机测试来生成测试用例,由于测…

工程项目管理常用的软件有哪些?

工程项目管理常用的软件有哪些? 市面上的项目管理工具各种类型的都有,各自也有各自的优势和特点,但是“一千个人眼里有一千个哈姆雷特”,A企业觉得好用的项目管理工具不一定适合B企业。 一般来说,企业在进行系统工具…

蚁群优化算法

目录 蚁群优化 Quadratic Assignment Problem (QAP) 主要代码 create model Cost RouletteWheelSelection Plot 结果 蚁群优化 蚁群优化(ACO)是一套概率元启发法和智能优化算法,其灵感来源于蚂蚁的社会行为。ACO算法也被归类为群集智能…

电脑系统可以直接备份到其它硬盘上吗

在日常使用电脑的过程中,我们都希望能够保护好重要的系统数据,以防止意外数据丢失或系统崩溃。那么,能否将电脑系统直接备份到其他硬盘上呢?本文将为您解答这个问题,并探讨备份系统的方法和注意事项。 工具/原料&…

Kubernetes通过滚动更新deployment实现金丝雀发布

如果要使用 Deployment 向用户子集或服务器子集上线版本, 则可以遵循资源管理所描述的金丝雀模式, 创建多个 Deployment,每个版本一个。 所谓金丝雀发布(Canary Release),就是第一个新的 Pod 创建完成后立…

高考落榜,误打误撞学习了软件测试现在月薪30k成为了班上人人羡慕的对象

记得我刚高考结束时,并没有想象中的狂欢,反而是一种处于一种坐立不安的焦虑中,因为那时单纯地认为:这张试卷,将决定我的一生。对于将信仰寄托于高考的学生来说,当网页上高考成绩弹出的一瞬间,世…

数据在内存中的存储--浮点数

那么好了好了,宝子们,今天给大家介绍一下 “数据在内存中储存” 的来龙去脉---浮点数,来吧,开始整活!⛳️ 一、数据类型家族(浮点数) 家族成员:float,double&#xf…

通过 docker-compose 快速部署 Kafka 保姆级教程

一、概述 Kafka是由Apache基金会开发的分布式流处理平台,采用发布-订阅模式,支持高吞吐量、低延迟的数据传输。主要用于处理实时数据管道、数据存储和数据分析等大数据应用场景。Kafka采用高效的数据压缩算法,可以在集群中存储大量的数据&am…

相约未名湖畔,百度商业AI技术创新大赛携手北大学子共探AI发展

火热六月,百度商业AI技术创新大赛正在如火如荼的进行,百度商业与高校合作展开全国巡回宣讲会,吸引高校学子参与,激发创新思维,为科技发展注入源源不断的新生力量。6月6日,百度商业AI技术创新大赛走进北京大…

CSPM项目管理专业人员能力等级评价各级考试题目由什么构成?

2021年10月,中共中央、国务院发布的《国家标准化发展纲要》明确提出构建多层次从业人员培养培训体系,开展专业人才培养培训和国家质量基础设施综合教育。建立健全人才的职业能力评价和激励机制。由中国标准化协会(CAS)组织开展的项…

智能存储柜的种类和特点分析

近年来随着网络技术的发展和人们对社会发展服务水平的需求不断提高,智能产品越来越普及,生活中也出现了越来越多的智能存储柜,应用于商场、超市、企业、工厂等场景,使用方便、保密性强、可靠性高。 智能存储柜种类非常多&#xff…

TIOBE 6月榜单出炉!AI影响到Python第一的位置?

TIOBE 6月榜单已经发布了,一起来看看这个月编程语言排行榜有什么变化吧! Python第一宝座岌岌可危 在过去的几年中,Python已经5次获得TIOBE指数年度奖项。由于数据科学和人工智能领域的推动,它越来越受欢迎。自 2021 年 10 月起&a…

大模型热潮来袭,AI基础软件深度赋能金融行业数智化升级

近日,由中国金融电子化集团有限公司、南京市建邺区人民政府主办的“2023 中国金融业数字化转型发展大会暨第十三届中国城市商业银行信息化发展创新座谈会”在南京盛大举办。九章云极DataCanvas公司副总裁周晓凌受邀出席会议,并发表“大模型时代的银行AI中…

前端必须掌握的HTML知识

前端开发者必须掌握的HTML知识包括: HTML基础语法:HTML标签、属性、值等基础语法。 HTML文档结构:HTML文档的基本结构,包括、、等标签的使用。 HTML元素:常用的HTML元素,如文本元素、图像元素、链接元素、…

【有奖调研】互联网新型社交,华为在找“元服务搭子”,快来集合!

“聊技术无话不谈,一起来吹吹元服务!畅聊你对元服务的想法,说不定,你就能撬动元服务的爆发增长!” 元服务(即原子化服务)是华为“轻量化”服务的新物种,可提供全新的服务和交互方式…

【C++】 STL(上)STL简述、STL容器

文章目录 简述STL容器list链表vector向量deque双端队列map映射表set集合hash_map哈希表 简述 STL是“Standard Template Library”的缩写,中文译为“标准模板库”。STL是C标准库的一部分,位与各个C的头文件中,即他并非以二进制代码的形式提供…

【Linux】解决Linux无法联网的一个小问题

今天使用在虚拟机VMware中使用Linux系统(Centos7)的时候,发现不能联网,找了很多办法也没有解决,甚至重新安装也没有解决,后来想起之前的解决方案。 要在任务管理器中打开,VMware的网络管理。

量子 金融,将改变游戏规则?

光子盒研究院 前言:如今,量子技术早已走出实验室、广泛赋能电力、化学、医学等各个领域;创新赛道上,加速奔跑的量子产业,将带来无限可能。现在,光子盒特开启「量子」专栏,一一解读量子技术将为下…