pnpm给插件(naiveUI)打补丁

pnpm打补丁

打补丁这个操作是前端同学所必须要掌握的一个技能。核心是通过打补丁的方式,修改一个第三方库的代码。

为什么需要打补丁

我们在项目开发中,会使用一些第三方库(elementUI、antd等),然后这些库也是可能存在一些bug,亦或者不满足项目使用,这个时候我们想要修改来满足我们的开发需求,那咋么办嘞?

一般有几种办法:

  1. 换库

如果依赖度不高,破坏性不强的话,只需换个满足需求的库即可,无伤大雅。

  1. 给插件提issue

官方更新时间长,作者可能并不会立刻帮忙解决,而我们开发时工期一般都紧急,所以是没办法等的,或者官方可能会拒绝你,直接over。

  1. 自己帮作者改

提pr:问题同上,要和官方反复拉扯,等待他们是一个漫长的过程,pass!

  1. 打补丁

这种是最快最有效的方法,直接在自己项目中修改。

怎么打补丁

因为我的包管理器是pnpm,而pnpm内置了patch功能,如果是npm或者是yarn,需要安装patch-package这个包,下面我们直接开讲(以naiveUI为例)

背景

naiveUI中的date-picker点击月份后没办法自动关闭,需要额外blur才可以,很鸡肋,我们准备修改这个逻辑,当点击月份后,自动关闭月份panel

  1. pnpm patch 包名

我们先执行pnpm patch naive-ui,控制台会生成两行代码如下

  1. 打开临时包编辑

我们来打开第一个You can now edit the following folder: /private/var/folders/dg/16s3shhs24d5673xc5hwzbbm0000gn/T/5d11bc933668d12b661ad1f1817bf6c9,直接打开这个目录,可以看到会帮我们生成naive-ui包的临时文件,直接在这个包里修改代码。

lib和es的区别,一般都是采用异步导入,修改es包中的文件即可

  1. 命令行的第二次话pnpm patch-commit /private/var/folders/dg/16s3shhs24d5673xc5hwzbbm0000gn/T/5d11bc933668d12b661ad1f1817bf6c9,执行commit,这个时候会自动生成patch/naive-ui@2.40.1.patch文件,packag.jsonpnpm-lock.yaml中也会新增
  1. 到此,补丁完成。后续我们如果删除 node_modules,重新 pnpm install,安装完成后 pnpm 会自动读取 patch 文件夹下的内容,将代码修改为 patch 内容。
相关推荐
Mintopia6 分钟前
🚀 Cesium-Kit:10 秒为你的 Cesium 项目添加动态光效标记
前端·javascript·cesium
Mintopia7 分钟前
🌩️ 云边协同架构下的 WebAI 动态资源调度技术
前端·javascript·aigc
Olrookie9 分钟前
若依前后端分离版学习笔记(十六)——scoped、路由跳转
前端·笔记
qaqxiaolei10 分钟前
高效办公利器:前端实现表格导出excel格式 + 自定义水印的完整方案
前端·javascript
叫我詹躲躲12 分钟前
为什么Bun.js能在3秒内启动一个完整的Web应用?
前端·javascript·bun
Olrookie13 分钟前
若依前后端分离版学习笔记(十七)——ruoyi开发规范&流程,请求流程,依赖引入,组件注册&通信
前端·笔记
Keepreal49614 分钟前
谈谈对闭包的理解以及常见用法
前端·javascript
BeyondCode程序员14 分钟前
设计原则讲解与业务实践
设计模式·架构
luckymiaow14 分钟前
告别环境配置地狱!UniApp Android 本地 一键打包神器
前端
七夜zippoe16 分钟前
微服务配置中心高可用设计:从踩坑到落地的实战指南(二)
微服务·架构·php