为开发、生产构建和库打包配置并优化 Vite。
Vite Patterns是一项面向实际任务的技能,主要用于只有 VITE 前缀 vars 被暴露在客户端代码中 – DB PASWORD 保留服务器侧, VITE API URL 捆绑;通过导入. meta.env.VITE * 而不是处理。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
VITE_ 为前缀的变量会暴露给客户端代码 —— DB_PASSWORD 保留在服务端,VITE_API_URL 会被打包进前端产物import.meta.env.VITE_* 访问,而非 process.env —— process.env 仅在 Node.js 环境中有效,在浏览器中为 undefined.env.local 会覆盖 .env,且默认被 Git 忽略 —— 适用于存放本地密钥等敏感信息import.meta.env.MODE 的值为 development 或 production —— 可用于条件逻辑判断,不应依赖 NODE_ENVoptimizeDeps.include 显式声明以启用预构建require() —— 应使用 import,或借助 module 模块的 createRequire 实现动态引入ssr.noExternal 或 optimizeDeps.exclude,交由 Vite 进行转换处理import pkg from 'pkg'; const { method } = pkgnode_modules/.vite 强制重建缓存optimizeDeps.include 以启用持久化缓存npm link 安装)不会被自动预构建 —— 需手动加入 optimizeDeps.includeoptimizeDeps.force: true 会在每次启动时强制重建 —— 仅建议用于调试,会严重损害开发体验vite.config.ts 和 tsconfig.json 中配置 —— Vite 使用自身解析逻辑,TypeScript 则依赖 tsconfig.jsonpath.resolve(__dirname, './src') 而非相对路径 —— 相对路径易受当前工作目录影响而失效@/ 别名并非内置 —— 不同于某些框架,需手动配置// vite.config.ts
resolve: {
alias: { '@': path.resolve(__dirname, './src') }
}
changeOrigin: true 会重写 Host 请求头 —— 多数校验请求来源的 API 均需此配置ws: true —— HTTP 代理默认不转发 WebSocket 流量/api 可代理 /api/users,而 /api/ 仅匹配 /api//users(注意双斜杠)server: {
proxy: {
'/api': {
target: 'http://localhost:3000',
changeOrigin: true,
rewrite: path => path.replace(/^\/api/, '')
}
}
}
public/ 目录下的文件直接映射至站点根路径,不参与构建处理 —— 适用于 favicon、robots.txt 等需保持原始路径的资源src/assets/ 目录下的文件会被处理、哈希化,并支持模块导入 —— 推荐用于代码中引用的图片、字体等资源import 导入资源以获取正确解析后的 URL:import logo from './logo.png' —— 硬编码路径在构建后将失效new URL('./img.png', import.meta.url) —— 模板字符串配合变量的方式不可用build.rollupOptions.output.manualChunks 实现代码分割 —— 否则所有代码将被打包进单个巨型 bundlerollup-plugin-visualizer 分析构建产物 —— 快速定位意外引入的大体积依赖build.target 默认面向现代浏览器 —— 如需兼容旧版浏览器,可设为 'es2015',但会导致包体积增大build.cssCodeSplit: true(默认启用)—— 每个异步 chunk 将生成独立的 CSS 文件build.lib 构建 npm 包 —— 其配置与应用模式不同external —— 避免将 React/Vue 等框架打包进你的库tsc 生成 —— Vite 不生成 .d.ts 文件formats: ['es', 'cjs'] —— 部分使用者仍需通过 require() 加载import.meta.hot.accept()server.hmr.overlay: false 会禁用错误覆盖层 —— 适用于自定义错误处理逻辑,但也会掩盖潜在问题ssr.external 用于标记仅限 Node.js 使用的包 —— 防止 SSR 构建时将 node_modules 打包进服务端产物ssr.noExternal 强制将指定包打包进 SSR 产物 —— 适用于含浏览器特定导入逻辑的包?inline 后缀,或通过 css.postcss 配置适配 SSR 场景