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/[email protected]文件,packag.jsonpnpm-lock.yaml中也会新增
  1. 到此,补丁完成。后续我们如果删除 node_modules,重新 pnpm install,安装完成后 pnpm 会自动读取 patch 文件夹下的内容,将代码修改为 patch 内容。
相关推荐
没资格抱怨3 分钟前
如何在vue3项目中使用 AbortController取消axios请求
前端·javascript·vue.js
掘金酱7 分钟前
😊 酱酱宝的推荐:做任务赢积分“拿”华为MatePad Air、雷蛇机械键盘、 热门APP会员卡...
前端·后端·trae
热爱编程的小曾19 分钟前
sqli-labs靶场 less 11
前端·css·less
丁总学Java24 分钟前
wget(World Wide Web Tool) 教程:Mac ARM 架构下安装与使用指南!!!
前端·arm开发·macos
总之就是非常可爱29 分钟前
🚀 使用 ReadableStream 优雅地处理 SSE(Server-Sent Events)
前端·javascript·后端
shoa_top41 分钟前
Cookie、sessionStorage、localStorage、IndexedDB介绍
前端
鸿蒙场景化示例代码技术工程师1 小时前
实现文本场景化鸿蒙示例代码
前端
ᖰ・◡・ᖳ1 小时前
Web APIs阶段
开发语言·前端·javascript·学习
stoneSkySpace1 小时前
算法——BFS
前端·javascript·算法
H5开发新纪元1 小时前
基于 Vue3 + TypeScript + Vite 的现代化移动端应用架构实践
前端·javascript