Unplugin:一套插件代码,通吃主流构建工具

发布时间:2026/10/5 5:17:23

Unplugin:一套插件代码,通吃主流构建工具
文章目录Unplugin一套插件代码通吃主流构建工具Unplugin一套插件代码通吃主流构建工具unjs 团队开源的 Unplugin 累计拿下 3.5k Star目标是把 Vite、Rollup、Webpack 等构建工具的插件写法统一起来。Unplugin 是一个统一插件系统写一次插件代码就能在多个构建工具里跑。目前支持的工具覆盖了前端主流方案。支持的构建工具包括ViteRollupWebpackesbuildRspackRsbuildRolldownFarmBun以及基于这些工具之上搭建的各类框架。为什么需要这套 unified 体系。写过 Vite 插件的人都知道Vite 的插件 API 和 Rollup 接近但和 Webpack 的 loader/tapable 模型差异很大。一个团队如果同时维护多套构建产物比如既要给 Vite 用又要兼容 Webpack 老项目插件逻辑往往得写两遍接口命名、钩子触发时机、上下文对象都不一样。Unplugin 在中间做了一层抽象。开发者按它的规范写 hook它内部根据目标平台转译成对应的插件形态。这样同一份源码 compile 出来能直接挂到 Vite、Rollup、Webpack、esbuild 等环境里。适用场景比较明确。组件库作者要同时支持多套构建链框架作者想让插件生态跨工具复用或者工程团队在迁移过程中新旧构建器并存都可以用它来收敛插件层。使用方式基本是引入包、调用工厂函数。一个简单 Vite 接入样例import{defineConfig}fromviteimport{unplugin}from./unpluginexportdefaultdefineConfig({plugins:[unplugin.vite],})Webpack 里则换成unplugin.webpackRollup 用unplugin.rollupesbuild 用unplugin.esbuild参数和钩子逻辑保持一致。钩子模型覆盖了构建器最常见的几个时机transform处理单文件内容resolveId拦截模块路径load自定义模块内容enforce控制前置还是后置。这些命名对于写过 Vite/Rollup 插件的人不会陌生Unplugin 在背后做了一层 naming mapping。文档站上对每种构建工具的差异点列得比较细比如 Webpack 的compilation上下文怎么映射、esbuild 的onResolve/onLoad怎么对接都有专门章节。许可证是 MIT由 Nuxt 团队维护unjs 生态里 VueUse、unstorage、ohmyfetch 等库都走类似的多工具支持路线Unplugin 是其基础设施之一。对插件作者来说最大的实际收益是少写一份代码。代价是引入一层中间抽象调试时需要理解 Unplugin internal 的转换逻辑遇到极端 case 比如依赖构建器私有 API 的场景可能还得 fallback 到原生插件写法。整体来看Unplugin 解决的是构建工具碎片化下的插件复用问题3.5k Star 的关注度说明这个痛点确实是社区共同需求。n 解决的是构建工具碎片化下的插件复用问题3.5k Star 的关注度说明这个痛点确实是社区共同需求。

相关新闻

从运营小白到效率达人:电商物流管理的完整进化指南

从运营小白到效率达人:电商物流管理的完整进化指南

2026/9/9 11:23:07

做电商三年多,我见过太多运营同行在同样的坑里反复摔倒。今天想把这些经验完整梳理一遍,从最基础的认知到系统化的管理,从单打独斗到团队协同,希望能给正在这条路上摸索的你一些参考。 这篇文章不讲高深的理论,全是实战…

TLA2518与PIC32MX695F512L的多通道ADC数据采集方案

TLA2518与PIC32MX695F512L的多通道ADC数据采集方案

2026/10/4 11:28:58

1. 项目背景与核心需求 在工业自动化、医疗设备和消费电子等领域,模拟信号到数字信号的可靠转换一直是嵌入式系统设计的关键环节。我最近在一个工业传感器项目中遇到了一个典型场景:需要同时采集8路不同传感器的模拟信号(温度、压力、振动等&…

基于TLA2518与STM32的高精度多通道信号采集方案

基于TLA2518与STM32的高精度多通道信号采集方案

2026/8/23 0:51:38

1. 项目概述:高精度模拟信号数字化方案 在工业测量、医疗设备和自动化控制等领域,将模拟信号可靠地转换为数字格式是系统设计的关键环节。本项目基于德州仪器的TLA2518模数转换器(ADC)与STMicroelectronics的STM32F373VC微控制器,构建了一个高…

CANN/GE ACL数据集缓冲区添加函数

CANN/GE ACL数据集缓冲区添加函数

2026/10/4 10:56:09

aclmdlAddDatasetBuffer 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Te…

用ffmpeg高效批量调整图片尺寸的实战指南

用ffmpeg高效批量调整图片尺寸的实战指南

2026/10/4 10:54:41

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

2026/10/4 10:55:43

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱 【免费下载链接】transformers 🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and mu…

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

2026/10/4 17:30:40

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system sup…

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

2026/10/4 5:19:11

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

2026/10/4 10:55:30

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting mi…