news 2026/1/31 4:44:13

Vite 在项目中的使用分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vite 在项目中的使用分析

## 📋 目录

- [Vite 工作流程](#vite-工作流程)
- [开发服务器流程](#开发服务器流程)
- [构建流程](#构建流程)
- [插件处理流程](#插件处理流程)
- [关键配置说明](#关键配置说明)
- [依赖关系](#依赖关系)

## Vite 工作流程

## 开发服务器流程```mermaid

## 构建流程```mermaid

## 插件处理流程```mermaid

## 关键配置说明

### 1. 基础配置

### 2. 配置详情

#### 插件配置

| 插件 | 用途 | 关键配置 |
|------|------|----------|
| `@vitejs/plugin-react` | React 支持,JSX 转换 | 默认配置 |
| `vite-plugin-svgr` | SVG 转 React 组件 | `svgrOptions` |
| `@originjs/vite-plugin-commonjs` | CommonJS 模块转换 | `skipPreBuild: true`, `exclude` |
| `viteStaticCopy` | 静态资源复制 | `targets: [{ src, dest }]` |

#### 路径解析配置

resolve: { extensions: ['.web.mjs', '.mjs', '.web.js', '.js', '.web.ts', '.ts', '.web.tsx', '.tsx', '.json', '.web.jsx', '.jsx'], alias: { // 从 modules.webpackAliases 继承 '@': 'src', // ... 其他别名 }, preserveSymlinks: true, // 保留符号链接,用于 yalc 本地联调 }

#### CSS 预处理器配置

css: { preprocessorOptions: { less: { math: 'always', javascriptEnabled: true, additionalData: ` @import "./src/styles/var.less"; @import "./src/styles/roe-theme.less"; `, // 全局注入样式变量 }, }, }

#### 开发服务器配置

server: { port: 3000, // 默认端口 host: '0.0.0.0', // 允许外部访问 open: true, // 自动打开浏览器 proxy: require(proxySetup), // 代理配置(从 config/setupProxy.js 加载) }

#### 构建配置

build: { outDir: 'dist', // 输出目录 assetsDir: 'static', // 静态资源目录 emptyOutDir: true, // 构建前清空输出目录 sourcemap: true, // 生成 SourceMap rollupOptions: { input: { main: 'src/index.tsx', // 入口文件 index: 'public/index.html', // HTML 模板 }, }, }

#### 依赖优化配置

optimizeDeps: { esbuildOptions: { plugins: [ esbuildCommonjs(['react-resizable']), // 特殊处理 react-resizable ], }, }

## 依赖关系```mermaid

## 关键特性

### 1. 环境变量处理
- 通过 `config/env.js` 获取环境变量
- 使用 `define` 配置注入到代码中
- 支持 `.env` 和 `.env.web` 文件

### 2. 路径别名
- 从 `config/modules.js` 继承 webpack 别名配置
- 支持 `@` 指向 `src` 目录
- 保留符号链接,支持 yalc 本地联调

### 3. CommonJS 兼容
- 使用 `@originjs/vite-plugin-commonjs` 处理 CommonJS 模块
- 特殊处理 `react-resizable` 等库
- 排除 `screen-editor` 等不需要转换的包

### 4. 静态资源处理
- SVG 通过 `vite-plugin-svgr` 转为 React 组件
- 静态资源通过自定义插件复制到构建目录
- 支持 `@base` 资源的自动复制

### 5. Less 全局样式
- 自动注入 `var.less` 和 `roe-theme.less`
- 支持 Less 数学运算
- 启用 JavaScript 表达式

### 6. 开发体验优化
- HMR 热模块替换
- 自动打开浏览器
- 代理配置支持 API 转发
- SourceMap 支持调试

## 使用命令

| 命令 | 说明 | 流程 |
|------|------|------|
| `yarn start` | 启动开发服务器 | 加载配置 → 启动服务器 → HMR |
| `yarn start:base` | 本地联调模式 | yalc link → 启动服务器 |
| `yarn build` | 生产构建 | 优化 → 打包 → 输出 |
| `yarn build:svg` | 生成 SVG 雪碧图 | 扫描 SVG → 生成雪碧图 |

## 注意事项

1. **不允许使用 require**:src 目录内必须使用 import
2. **样式导入**:去掉 `~` 符号
3. **SVG 处理**:使用手动生成雪碧图方式,避免启动时转换
4. **本地联调**:使用 yalc 进行 `@base` 的本地联调
5. **缓存清理**:遇到依赖问题可删除 `node_modules/.vite` 文件夹

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/29 18:40:08

需求接口人与研发接口人的职责分别是什么

需求接口人与研发接口人是连接“业务价值”与“技术实现”的两个核心枢纽。需求接口人(通常是产品经理或业务分析师)的核心职责是“定义”,即明确“做什么”和“为什么做”,他们对业务价值、需求优先级和用户体验负责。研发接口人…

作者头像 李华
网站建设 2026/1/30 9:54:14

基于大数据的短视频用户兴趣分析的设计与实现(程序+文档+讲解)

课题介绍在短视频平台精细化运营、个性化推荐需求下,传统用户兴趣分析存在 “维度单一、实时性差、精准度不足” 的痛点,基于大数据技术构建的短视频用户兴趣分析体系,整合用户行为数据、内容交互数据、环境数据等多源信息,实现用…

作者头像 李华
网站建设 2026/1/30 11:45:03

【最新2023】各省地区生产总值GDP 人均生产总值(人均GDP) 地区生产总值指数的 省级省份

【最新2023】各省地区生产总值GDP 人均生产总值(人均GDP) 地区生产总值指数的 省级省份 时间范围1999-2023年 人均生产总值指数(人均GDP指数) 包括一下: 人均生产总值(人均GDP) 各省地区生产总值GDP 人均生产总值指数(人均GDP指数) 地区生产总值指数 见图 说明:人均生产总值指…

作者头像 李华
网站建设 2026/1/30 0:30:38

医疗自动标注漏医生隐写症状 后来补NLP规则引擎才救回诊断准确率

📝 博客主页:jaxzheng的CSDN主页 目录医疗数据科学:当Excel遇上心电图,我差点把医院整崩溃了 一、为什么说我是"数据界的急诊科医生" 二、那些年我在医疗数据里踩过的坑 三、那些让人拍案叫绝的医疗数据应用 四、给想入…

作者头像 李华
网站建设 2026/1/30 5:53:48

C 语言字符串函数超全解析

对于刚接触 C 语言的小伙伴来说,字符串函数就像 “字符处理的万能工具”,但用不好也容易踩坑。这篇内容会从 “核心逻辑→常用函数→避坑指南” 一步步讲,先懂底层、再学用法、最后避坑,保证通俗易懂~ 一、先搞懂&…

作者头像 李华
网站建设 2026/1/30 3:53:49

海外仓签收入库环节怎么优化?海外仓入库流程优化方案(附TOPWMS实操)

在海外仓一件代发业务中,海外仓入库环节常被低估,但入库的问题直接影响到后续仓库的一系列操作。货物堆堵、SKU混乱、错发追责等入库乱象,并非单纯的管理疏忽,其根源在于缺乏一套系统化、标准化的流程管控体系。今天将根据我们的东…

作者头像 李华