当前位置: 首页 > article >正文

第九章:Vite API 参考手册

第九章Vite API 参考手册9.1 核心 APIcreateServer创建 Vite 开发服务器import{createServer}fromviteconstserverawaitcreateServer({configFile:false,root:__dirname,server:{port:3000}})awaitserver.listen()console.log(服务器启动在,server.config.server.port)build以编程方式构建import{build}fromviteawaitbuild({root:./,build:{outDir:dist,rollupOptions:{input:index.html}}})resolveConfig解析配置import{resolveConfig}fromviteconstconfigawaitresolveConfig({},build,production)console.log(config.base)9.2 插件 APIPlugin 接口interfacePlugin{name:string// 钩子buildStart?:(options:InputOptions)voidresolveId?:(source:string,importer:string|undefined)string|nullload?:(id:string)string|nulltransform?:(code:string,id:string)TransformResult buildEnd?:()voidgenerateBundle?:(options:OutputOptions,bundle:{[fileName:string]:OutputAsset|OutputChunk})void// Vite 特有config?:(config:UserConfig,env:{command:string,mode:string})UserConfig|nullconfigResolved?:(config:ResolvedConfig)voidconfigureServer?:(server:ViteDevServer)voidtransformIndexHtml?:(html:string,ctx:TransformIndexHtmlContext)string|HtmlTagDescriptor[]handleHotUpdate?:(ctx:HmrContext)ModuleNode[]|void}TransformResultinterfaceTransformResult{code:stringmap?:SourceMap|nulldeps?:string[]}9.3 配置 APIdefineConfigimport{defineConfig}fromviteexportdefaultdefineConfig({// 配置项})// 异步配置exportdefaultdefineConfig(async({command,mode}){constpluginsawaitimport(./plugins)return{plugins:[plugins.default()]}})loadConfigFromFileimport{loadConfigFromFile}fromviteconst{config,deps}awaitloadConfigFromFile({command:serve,mode:development},./vite.config.js)9.4 开发服务器 APIViteDevServer 接口interfaceViteDevServer{config:ResolvedConfig middlewares:Connect.Serverlisten(port?:number,isRestart?:boolean):PromiseViteDevServerclose():PromisevoidtransformRequest(url:string,options?:TransformOptions):PromiseModuleNode|nullws:WebSocketServer moduleGraph:ModuleGraph pluginContainer:PluginContainerhotUpdate(module:ModuleNode):Promisevoid}使用示例constserverawaitcreateServer()// 添加自定义中间件server.middlewares.use((req,res,next){console.log(${req.method}${req.url})next()})// 监听 WebSocket 消息server.ws.on(connection,(socket){console.log(客户端连接)})awaitserver.listen()9.5 模块图 APIModuleNodeinterfaceModuleNode{id:stringfile:stringurl:stringimporters:SetModuleNodeimportedModules:SetModuleNodetransformResult:TransformResult|nullssrTransformResult:TransformResult|nulllastHMRTimestamp:numberacceptHmrDeps:SetModuleNodeacceptedHmrDeps:SetModuleNode}访问模块图constmodulesserver.moduleGraph.getModules()for(constmoduleofmodules){console.log(module.id,module.importedModules.size)}9.6 插件容器 APIinterfacePluginContainer{resolveId(id:string,importer?:string):Promisestring|nullload(id:string):PromiseLoadResult|nulltransform(code:string,id:string):PromiseTransformResult|nullbuildStart(options:InputOptions):PromisevoidbuildEnd():Promisevoid}9.7 工具函数normalizePath路径规范化import{normalizePath}fromviteconstpathnormalizePath(src\\components\\Button.vue)// src/components/Button.vuecreateLogger创建日志器import{createLogger}fromviteconstloggercreateLogger(info)logger.info(信息消息)logger.warn(警告消息)logger.error(错误消息)isCSSRequest检查是否为 CSS 请求import{isCSSRequest}fromviteif(isCSSRequest(id)){console.log(这是 CSS 文件)}9.8 环境变量 APIloadEnv加载环境变量import{loadEnv}fromviteconstenvloadEnv(development,process.cwd(),VITE)console.log(env.VITE_API_URL)envPrefixenvPrefix:VITE_// 默认只有 VITE_ 开头的变量暴露9.9 预构建 APIoptimizeDepsimport{optimizeDeps}fromviteawaitoptimizeDeps({config:{root:process.cwd(),optimizeDeps:{include:[vue,vue-router]}}})9.10 热更新 APIHmrContextinterfaceHmrContext{file:stringtimestamp:numbermodules:ModuleNode[]read:()string|Promisestringserver:ViteDevServer}自定义 HMRhandleHotUpdate({file,server,modules}){if(file.endsWith(.custom)){server.ws.send({type:custom,event:custom-update,data:{file}})return[]}returnmodules}9.11 构建 APIbuild 选项interfaceBuildOptions{target?:modules|string[]outDir?:stringassetsDir?:stringassetsInlineLimit?:numbercssCodeSplit?:booleansourcemap?:boolean|inline|hiddenrollupOptions?:RollupOptions minify?:boolean|esbuild|terserterserOptions?:TerserOptions write?:booleanemptyOutDir?:booleanmanifest?:boolean|stringlib?:LibraryOptions ssr?:boolean|stringssrManifest?:boolean|string}9.12 服务器选项ServerOptionsinterfaceServerOptions{host?:string|booleanport?:numberstrictPort?:booleanhttps?:boolean|HttpsOptions open?:boolean|stringproxy?:Recordstring,string|ProxyOptionscors?:CorsOptions|booleanheaders?:Recordstring,stringfs?:{strict?:booleanallow?:string[]}hmr?:HmrOptions|booleanwatch?:WatchOptions middlewareMode?:boolean}9.13 预构建选项DepOptimizationOptionsinterfaceDepOptimizationOptions{include?:string[]exclude?:string[]entries?:string[]esbuildOptions?:EsbuildOptions force?:boolean}9.14 完整类型定义所有类型定义都可以从 Vite 包中导入importtype{UserConfig,ConfigEnv,Plugin,ViteDevServer,BuildOptions,ServerOptions,DepOptimizationOptions}fromvite本章小结API 参考手册提供了 Vite 的核心 API 文档编程方式使用 Vite插件开发接口开发服务器控制模块图操作工具函数这些 API 可用于构建工具、插件和自动化脚本。

相关文章:

第九章:Vite API 参考手册

第九章:Vite API 参考手册 9.1 核心 API createServer 创建 Vite 开发服务器 import { createServer } from viteconst server await createServer({configFile: false,root: __dirname,server: { port: 3000 } })await server.listen() console.log(服务器启动在,…...

汽车质量体系_1

从逻辑关系看,ISO9000是最底层的通用质量管理框架,定义了质量管理的基本术语和原则,适用于所有组织。IATF16949在ISO9001的基础上,针对汽车行业的特殊性,提出了更具体的质量管理要求,覆盖从设计、生产到服务…...

营销自动化数据驱动 - 多源数据 OLAP 架构演进们

1. 流图:数据的河流 如果把传统的堆叠面积图想象成一块块整齐堆叠的积木,那么流图就像一条蜿蜒流淌的河流,河道的宽窄变化自然流畅,波峰波谷过渡平滑。 它特别适合展示多个类别数据随时间的变化趋势,尤其是当你想强调整…...

C#/.NET/.NET Core优秀项目和框架2026年3月简报

前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的详细介绍、功能特点、使用方式以及部分功能截图等(打不开或者打开GitHub很慢的…...

30分钟掌握OpenClaw:千问3.5-9B新手训练营

30分钟掌握OpenClaw:千问3.5-9B新手训练营 1. 为什么选择OpenClaw千问3.5-9B组合 去年我在尝试自动化处理日常工作报告时,发现市面上的RPA工具要么太笨重,要么需要复杂的编程知识。直到遇到OpenClaw这个开源框架,配合千问3.5-9B…...

三菱PLC搭配雅马哈四轴机械手在线检测收料案例解析:融合CAD电气图纸、CClink与串口通讯...

三菱plc搭配四轴雅马哈机械手在线检测收料案例程序。 (包涵CAD电气图纸,plc程序,人机界面,机器人程序,BOM表)程序中应用到CClink通讯,232串口通讯,数据采集伺服定位控制。这项目有点…...

Linux内核中的网络协议栈详解

Linux内核中的网络协议栈详解 引言 网络协议栈是Linux内核中负责处理网络通信的核心组件,它实现了从物理层到应用层的完整网络协议,为应用程序提供了可靠的网络通信服务。Linux内核的网络协议栈支持多种协议,包括TCP/IP、UDP、ICMP等&#xf…...

分享一个网络智能运维系统

项目简介 网络智能运维系统是一款面向网络设备的一体化智能运维管理平台,旨在帮助企业 IT 运维团队高效、自动化地完成网络设备的日常巡检、配置备份、批量操作及定时任务调度等核心工作。系统支持多品牌设备(华为、H3C、思科、锐捷、Juniper、MikroTik …...

深度排查:Hyper-V 已关但 VirtualBox 仍报错的完整解决方案

一、先确认核心状态:是否真的完全关闭了 Hyper-V 1. 用命令验证 Hyper-V 状态 以管理员身份打开终端,执行以下命令,确认所有相关服务都已禁用: bcdedit /enum | findstr hypervisorlaunchtype你已经确认是 Off,再执行&…...

绍兴Geo优化,如何选对靠谱服务商?

在人工智能技术深度渗透商业推广领域的当下,GEO(地理定位)优化已不再是简单的本地搜索排名,而是演变为一场关于“空间精准度”与“AI语义理解”的双重竞赛。对于绍兴及周边区域的企业而言,如何从众多服务商中筛选出真正…...

Safeboxie沙盘,电脑多开程序神器,系统安全工具,非常好用!

Safeboxie沙盘,电脑多开程序神器,系统安全工具,非常好用! 软件介绍 菜鸟高手裸奔工具沙盘Safeboxie是一款国外著名的系统安全工具,它可以让选定程序在安全的隔离环境下运行,只要在此环境中运行的软件&#…...

【2026企业级Blazor落地白皮书】:金融/医疗场景下SSR+Hydration+Streaming SSR三模混合渲染实战(附GCP/Azure边缘部署Checklist)

第一章:Blazor 2026企业级落地战略全景图 Blazor 正在从“可选框架”跃迁为 2026 年企业级 .NET 应用的默认前端架构范式。其核心驱动力并非仅限于 C# 全栈统一,更在于 WebAssembly 运行时成熟度、AOT 编译稳定性提升、以及与 Azure Static Web Apps、Mi…...

Synopsys Multivoltage Flow User Guide(汉化笔记)

1 Low-Power Design Strategies 1.1 Increasing Challenges of Power 早期的IC设计中EDA工具更多的优化方向是性能和面积,功耗考虑的比较少,但是,现在的设计CMOS器件密度和时钟频率都在提升,功耗重要性也更加明显,供电电压和晶体管阈值电压也在降低,漏电电流也成为无法忽…...

【PHP低代码表单安全生死线】:92%开发者忽略的3类注入漏洞(含OWASP Top 10映射表+自动检测脚本)

第一章:PHP低代码表单安全生死线总览在低代码开发范式下,PHP 表单常被封装为可拖拽、自动生成的组件,但其底层仍依赖 $_POST、$_GET 等超全局变量接收用户输入。这种便利性极易掩盖注入、XSS、CSRF 和越权提交等高危风险——一条未过滤的 $_P…...

【数据库系统】数据库系统概论——第十二章 数据库管理系统

第十二章 数据库管理系统 文章目录 第十二章 数据库管理系统 12.1数据库管理系统的基本功能 12.2数据库管理系统的系统结构 12.2.1数据库管理系统的层次结构 12.2.2关系数据库管理系统的运行过程示例 12.3语言处理层 12.3.1语言处理层的任务和工作步骤 12.3.2解释方法 12.3.3预…...

OpenClaw异常检测技能:基于SecGPT-14B的流量行为分析

OpenClaw异常检测技能:基于SecGPT-14B的流量行为分析 1. 为什么需要AI驱动的流量分析 去年处理一起内网渗透事件时,我花了整整三天手动分析pcap文件。传统规则引擎虽然能识别已知攻击特征,但对新型C2通信协议几乎束手无策——攻击者只需简单…...

OpenClaw技能市场巡礼:Qwen3-4B适配的十大实用模块

OpenClaw技能市场巡礼:Qwen3-4B适配的十大实用模块 1. 为什么需要关注OpenClaw技能市场? 第一次接触OpenClaw时,我被它"AI操控电脑"的概念吸引,但真正让我持续使用的却是它的技能市场(ClawHub)…...

MeteorSeed核

这个代码的核心功能是:基于输入词的长度动态选择反义词示例,并调用大模型生成反义词,体现了 “动态少样本提示(Dynamic Few-Shot Prompting)” 与 “上下文长度感知的示例选择” 的能力。 from langchain.prompts impo…...

15DaysofAnimationsinSwift锁屏动画教程:从概念到代码实现

15DaysofAnimationsinSwift锁屏动画教程:从概念到代码实现 【免费下载链接】15DaysofAnimationsinSwift A project to learn animations. 项目地址: https://gitcode.com/gh_mirrors/15/15DaysofAnimationsinSwift 想要为你的iOS应用添加一个流畅、优雅的锁屏…...

让开发流程更高效:为 Visual Studio 订阅用户解锁 Syncfusion凸

一、什么是requests? requests 是一个用于发送HTTP请求的 Python 库。 它可以帮助你: 轻松发送GET、POST、PUT、DELETE等请求 处理Cookie、会话等复杂性 自动解压缩内容 处理国际化域名和URL 二、应用场景 requests 广泛应用于以下实际场景: …...

【OpenCV教程】Trackbar到底怎么用?

1.createTrackbar创建滚动条1.1 APICV_EXPORTS int createTrackbar(const String& trackbarname, const String& winname,int* value, int count,TrackbarCallback onChange 0,void* userdata 0);参数如下参数含义trackbarname滚动条名字winname(window name)窗体名字…...

零基础入门转录组上游分析——第四章(序列比对)

零基础入门转录组上游分析——第四章(序列比对) 目录零基础入门转录组上游分析——第四章(序列比对)1. 之前章节结果的查看1. 构建参考基因组索引2. 序列比对3. 压缩和排序XXX.sam文件4. 构建bam文件的索引(可选&#…...

Js2Py错误处理与调试:解决常见问题的终极指南

Js2Py错误处理与调试:解决常见问题的终极指南 【免费下载链接】Js2Py JavaScript to Python Translator & JavaScript interpreter written in 100% pure Python🚀 Try it online: 项目地址: https://gitcode.com/gh_mirrors/js/Js2Py Js2Py是…...

知识图谱构建实战:基于Knowledge-Graph项目的实体识别与关系抽取技术

知识图谱构建实战:基于Knowledge-Graph项目的实体识别与关系抽取技术 【免费下载链接】NLP-Knowledge-Graph 项目地址: https://gitcode.com/gh_mirrors/kn/Knowledge-Graph 知识图谱作为人工智能领域的重要技术,能够将复杂的信息转化为结构化的…...

数据存储与管理:QmlBook本地存储与SQL集成教程

数据存储与管理:QmlBook本地存储与SQL集成教程 【免费下载链接】qmlbook The source code for the upcoming qml book 项目地址: https://gitcode.com/gh_mirrors/qm/qmlbook QmlBook提供了全面的本地存储解决方案,帮助开发者轻松实现应用数据的持…...

OpenClaw浏览器自动化:Qwen3.5-9B爬取带图片的学术资料

OpenClaw浏览器自动化:Qwen3.5-9B爬取带图片的学术资料 1. 为什么需要自动化学术资料采集 上周我在研究量子计算的最新进展时,遇到了一个典型痛点:需要在十几个学术平台手动翻页、下载PDF、截图关键图表,再手工整理参考文献。这…...

从春晚到AWE:追觅与扫地机器人市场的“冰与火之歌”

2026年开年,扫地机器人行业呈现出耐人寻味的两极图景:一边是追觅凭借春晚效应交出全渠道市占第一的成绩单,另一边是洛图科技发布的行业数据显示,1-2月中国扫地机器人线上销量同比下降22.2%。在行业大盘承压的背景下,追觅为何能逆势增长?春晚这个国民级舞台,究竟如何改写…...

OpenClaw定时任务管理:千问3.5-27B实现智能闹钟与提醒

OpenClaw定时任务管理:千问3.5-27B实现智能闹钟与提醒 1. 为什么需要智能化的定时任务 上个月我差点错过一个重要会议——虽然设置了手机提醒,但当天临时调整的议程让原定时间完全失效。这种"静态闹钟失效"的痛点,促使我尝试用Op…...

蓝桥杯嵌入式15届国赛,轻松解决——附满分工程链接

蓝桥杯嵌入式15届国赛 前言 以下内容仅代表个人观点,基于有限的经验和认知整理而成。每个人的视角和背景不同,观点难免存在差异或局限。若存在疏漏或不足之处,欢迎指正与探讨,但请多一份包容。希望通过这些思考,能激…...

数字生成器(骰子模拟器)

输入两个数(a,b)&#xff0c;随机输出一个在a与b之间的数#include <bits/stdc.h> using namespace std;int main( ) {int c, j, r;cin >> c >> j;srand((unsigned)time(nullptr));for (int i 0; i < 1; i) {r rand() % c j - c;cout << r <&l…...