修改依赖库

news2025/1/11 23:46:56

修改依赖库

在开发时,当我们发现使用的依赖库有 bug,需要修改,一般都有这几种处理方式:

  1. fork 源码,修复 bug 然后提交 pr,等待作者合并,发布新版本
  2. 提 issue 等待作者修复(跟方式1类似)
  3. 使用 patch-package 打补丁,安装依赖后自动打上修改的内容

显然方法 1 和方法 2 在紧张的开发阶段是不大现实的,因为我们不能确定作者能否即使修改。因此使用方法 3 更为合理。在 pnpm v7.4.0版本中,pnpm 添加了 pnpm patch 和 pnpm patch-commit,支持给依赖打补丁。

大致的修改流程也比较简单:

  1. 通过命令(pnpm i)拷贝一份依赖库的文件项目,然后用户对该拷贝的项目进行修改,
  2. 通过提供的命令对修改后的代码以及原来的代码进行diff,生成一个xxx.patch的文件,对应项目的 package.json 会有个 pnpm.patchedDependencies 字段来指向 patch 文件,之前其他人安装依赖后,会自动使用到该 patch。

通过 pnpm patch xxx@xxx 命令可以让我们开辟一个临时编辑目录让我们能编辑需要 patch 的依赖包。

请添加图片描述

以 connect 为例,我们可以打开这个临时目录,并在这个项目中进行更改。

我们在 use 方法中加一个打印:

请添加图片描述

之后运行 pnpm patch-commit xxx 把修改提交到工作区的 node_module 中。

命令执行完成后,可以看到项目中生成了一个 patches/connect@3.7.0.patch 的文件:

请添加图片描述

同时在 package.json 中也增加了如下配置:

请添加图片描述

在 node_modules/connect 中也可以看到我们的依赖包里的文件也是同步修改了的。

请添加图片描述

之后我们在项目中使用到的 connect 库就是修改后的。当我们发布自己的包后,其他人在通过 pnpm install 命令下载的时候也会拉取到我们修改后的依赖包。

除了上述的方法,也可以将公有依赖 fork 到私有仓库,之后通过 URI 的方式进行安装,如:

如果我们安装 lodash 这个库的话,除了使用包名安装,还可以直接通过 URI 的形式

  "dependencies": {
    "my-loadsh": "git+https://github.com/leo/lodash.git"
  },

如果我们想移除修改,把对应的 patch 文件删除,并把 package.json 里 patchedDependencies 对应的依赖也删除,之后通过 pnpm install 重新安装。

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

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

相关文章

从物理学到电气工程:如何自学PLC进入工厂担任助理工程师?

本科物理专业自学 PLC 方向,有机会进厂担任助理电气工程师,但可能会面临一些挑战。在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「PLC的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“…

reactive函数

承上启下 在上一节 ref() 函数中,我们大致理解了 ref() 函数的作用是用来将数据转化为响应式的。但是对于基本类型和引用类型,Vue3底层做的转换不一致:对于基本类型,Vue3 通过 ref() 函数将变量转化为了 RefImpl引用对象从而实现响…

NVIDIA把Llama-3的上下文长度扩展16倍,长上下文理解能力超越GPT-4

在 Llama-3.1 模型发布之前,开源模型与闭源模型的性能之间一直存在较大的差距,尤其是在长上下文理解能力上。 大模型的上下文处理能力是指模型能够处理的输入和输出 Tokens 的总数。这个长度有一个限制,超过这个限制的内容会被模型忽略。一般…

Power功效分析之均值差原理及案例实操分析

Power功效分析常用于实验研究时样本量的计算(或功效值计算),实验研究中均值差的使用较多,具体包括单样本t检验、独立样本t检验、配对t检验、单样本z检验、Mann-whitey检验和配对符号秩和检验等,具体如下表格所述&#…

最新版的,SpringBoot整合Sharding-Jdbc实现读写分离

Sharding-Jdbc实现读写分离 Hello,兄弟们好,我是Feri,最近整理了最新的基于Seata-Server2.0实现分布式事务的demo,希望对你有所帮助,有任何问题,可以随时沟通交流,在成为技术大牛的路上&#xf…

校园点餐系统

1 项目介绍 1.1 摘要 在这个被海量信息淹没的数字化时代,互联网技术以惊人的速度迭代,信息的触角无处不在,社会的脉动随之加速。每一天,我们都被汹涌而至的数据浪潮包裹,生活在一个全方位的数字信息矩阵中。互联网的…

vue3解析markdown文件为html并且高亮显示代码块

前言: 很多时候我们程序员写的文档都是以markdown为主,但是我们每次找相关资料极为不便,如果能直接把markdown文档引进vue项目里,解析成html并且展示出来,然后部署在服务器上,查看是不是极为方便呢。&…

3D打印随形透气钢:模具困气终结者

困气是模具经常遇到的问题,是制约生产效率与产品质量的关键因素之一。传统透气钢材料虽有所助益,但其在加工复杂度、形状适应性及性能均衡性上的局限性明显。在此背景下,3D打印技术的革新性应用——随形透气钢应运而生,为困气、排…

view 和 reshape的区别 及 测试对一个数据执行view 和 reshape之后得到的数据还一样吗

一、测试对一个数据执行view 和 reshape之后得到的数据还一样吗 问题: x torch.randn(2, 3, 4) y_view x.view(12, 2) y_reshape y_view.reshape(2,3, 4)得到的结果一样吗 import torch# 创建一个张量 x torch.randn(2, 3, 4)# 使用 …

Datawhale夏令营AI for Science(AI+气象)学习笔记1

如何针对降水预测问题搭建模型 回顾baseline, 我们可以大致将搭建模型并解决问题分为以下几个步骤: 定义数据集, 建立起训练数据和标签之间的关系;定义数据加载器(DataLoader), 方便取数据进行训练 定义模型, 利用PyTorch搭建网络,根据输入…

关于DynamoRIO处理多线程程序时候的问题

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

【天机学堂】面试总结

写在前面,首先要将天机学堂包装一下,智慧教育平台》,暂时就想到这个。天机学堂文档 1.包装简历 待更新。。。

持续集成09--Jenkins配置Sonar代码漏洞扫描工具

专栏内容 持续集成01--Git版本管理及基础应用实践_持续集成下的git分支-CSDN博客 持续集成02--Linux环境更新/安装Java新版本-CSDN博客 持续集成03--Jenkins的安装与配置-CSDN博客 持续集成04--Jenkins结合Gitee创建项目_jenkins集成gitee-CSDN博客 持续集成05--Gogs的安装与使…

Ubuntu运行深度学习代码,代码随机epoch中断没有任何报错

深度学习运行代码直接中断 文章目录 深度学习运行代码直接中断问题描述设备信息问题补充解决思路问题发现及正确解决思路新问题出现最终问题:ubuntu系统,4090显卡安装英伟达驱动535.x外的驱动会导致开机无法进入桌面问题记录 问题描述 运行深度学习代码…

MySQL--表完整性约束

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 作用:用于保证数据的完整性和一致性 约束条件说明PRIMARY KEY (PK)该字段为该表的主键,可以唯一的标识记录,不可以…

【Python 逆向滑块】(实战三)逆向滑块,并实现用Python+Node.js 生成滑块、识别滑块、验证滑块、发送短信

逆向日期:2024.08.01 使用工具:Node.js 本章知识:逆向网易易盾【cb】参数 文章难度:中等(没耐心的请离开) 文章全程已做去敏处理!!! 【需要做的可联系我】 AES解密处理…

乐鑫ESP32-S3语音唤醒和命令词识别,XIAO ESP32 S3 Sense开发套件应用

在这个数字化飞速发展的时代,小型化、智能化已成为技术发展的趋势。ESP32-S3芯片在物联网和嵌入式机器学习领域的应用潜力,让我们对智能设备的未来充满了无限遐想。 OpenGlass项目中的Seeed Studio XIAO ESP32 S3 Sense开发套件,以其小巧的体…

【kali靶机之serial】--反序列化漏洞实操

kali靶机配置 【我图片里没有截图的默认配置即可】需要改的地方图片里面都有。 使用kali扫描网关的主机。 扫到一个开放了80端口HTTP协议的主机ip 访问80端口 会看到一个文本页面,翻译一下看是什么意思。。 F12查看cookie,是一个base64编码了的东西 使…

再获奖项,亚信安慧AntDB数据库被评为“2023-2024国产数据库创新赋能优秀产品”

日前,由工业和信息化部直属的中国电子信息产业发展研究院赛迪网、《数字经济》杂志主办的第二届数字驱动创新峰会(DDIS 2024)在京隆重举办,“2023-2024数字创新优秀成果案例” 征集结果同期正式发布。亚信安慧AntDB数据库凭借多年…