关于 vite
Vite 是面向现代前端项目的构建工具,提供基于原生 ES modules 的开发服务器和 Rollup 生产构建。此技能汇总配置、插件、资源处理与 SSR 等实践,适用于前端开发者。
主要功能
- 01快速启动开发服务器
- 02基于 Rollup 优化生产构建
- 03支持 TypeScript、JSX 与 CSS 预处理器
- 04提供插件和虚拟模块机制
- 05支持库模式、多页面与 SSR
适用场景
- 01搭建单页或多页应用
- 02配置 SSR 前端项目
- 03构建并发布库
- 04管理 monorepo 前端包
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ oakoss/ agent-skills --skill vite安装后在 Claude Code 中输入/vite确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/build-optimization.mdconfiguration.mdcss-and-assets.mddev-server.mdenvironment-variables.mdlibrary-mode.mdplugins.mdssr-configuration.md详细介绍
Vite
概述
Vite 是新一代前端构建工具,可通过原生 ES 模块即时启动开发服务器,并通过 Rollup 优化生产构建。它开箱即支持 TypeScript、JSX、CSS 预处理器和静态资源,无需配置。
适用场景: 单页应用、多页应用、库发布、SSR 应用、monorepo 包,以及任何需要快速开发反馈和优化构建的现代前端项目。
不适用场景: 需要未经转译即可输出 ES5 的旧版浏览器、被锁定为使用没有 Vite 对应方案的 Webpack 专用 loader 的项目,以及非 JavaScript 构建流程。
快速参考
| 模式 | API | 要点 |
|---|---|---|
| 配置文件 | defineConfig({}) | 类型安全的配置,支持 IDE |
| 条件配置 | defineConfig(({ command, mode }) => ({})) | 按命令/模式使用不同配置 |
| 路径别名 | resolve.alias | 将 @/ 映射到 src/ |
| 开发代理 | server.proxy | 将 API 请求转发到后端 |
| HMR 配置 | server.hmr | WebSocket 主机/端口/协议 |
| HTTPS 开发 | server.https | 传入 TLS 证书/密钥选项 |
| 构建目标 | build.target | 输出的 ES 模块目标 |
| 手动分块 | build.rollupOptions.output.manualChunks | 控制代码拆分 |
| 库模式 | build.lib | 发布 ES/CJS/UMD 包 |
| SSR 构建 | build.ssr + ssr 选项 | 服务端渲染配置 |
| 环境变量 | import.meta.env.VITE_* | 暴露给客户端的环境变量 |
| loadEnv | loadEnv(mode, root, prefix) | 在配置中加载环境变量 |
| CSS 模块 | css.modules | 作用域限定的 CSS 类名 |
| 预处理器 | css.preprocessorOptions | Sass/Less/Stylus 选项 |
| PostCSS | css.postcss | 内联或外部 PostCSS 配置 |
| 静态资源 | import url from './img.png' | 返回解析后的公共 URL |
| 插件 | { name, transform, load } | 基于钩子的插件系统 |
| 虚拟模块 | resolveId + load 钩子 | 在构建时生成模块 |
| 多页应用 | build.rollupOptions.input | 多个 HTML 入口点 |
常见错误
| 错误 | 正确做法 |
|---|---|
通过 VITE_ 前缀暴露机密信息 | 仅为可在客户端安全使用的变量添加 VITE_ 前缀;在配置中使用 loadEnv 处理仅供服务端使用的机密信息 |
在客户端代码中使用 process.env | 使用 import.meta.env.VITE_*(Vite 会在构建时替换) |
修改 rollupOptions.input 时未使用 resolve() | 始终使用 path.resolve() 或 import.meta.dirname 获取绝对路径 |
| 在库模式下未将 peer 依赖标记为外部依赖 | 将 React/Vue 添加到 rollupOptions.external,以避免打包 |
| 在 SSR 中创建 QueryClient 式的单例 | 确保 SSR 中每个请求的状态相互独立,避免请求间数据泄露 |
同时使用内联 PostCSS 配置和 postcss.config.js | 二选一;内联配置会禁用配置文件搜索 |
设置 base 时未添加尾随斜杠 | base 应设置为带尾随斜杠的 /path/ 或完整 URL |
在 ESM 配置中使用 __dirname | 使用 import.meta.dirname(Node 21+)或 fileURLToPath |
委派
- 插件发现:使用
ExploreAgent - 构建分析:使用
TaskAgent - 配置审查:委派给
code-reviewerAgent
如果有
vitest-testing技能,请将测试配置和 Vitest 设置委派给它。 如果有tailwind技能,请将 Tailwind CSS 配置和实用类模式委派给它。 如果有react-patterns技能,请将 React 组件模式和 hooks 委派给它。 如果有typescript-patterns技能,请将 TypeScript 配置和类型模式委派给它。 如果有pnpm-workspace技能,请将 monorepo 工作区配置委派给它。
参考资料
评论
支持 Markdown