news 2025/12/29 23:13:51

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进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/27 3:53:47

dpdk-testpmd在超过128核双numa场景启动失败问题

问题描述: dpdk-testpmd在超过128核双numa场景中,启动失败问题,问题日志如下,扫描内存的时候,无法使用numa1的内存。 ... EAL: Detected lcore 0 as core 0 on socket 0 EAL: Detected lcore 127 as core 215 on socke…

作者头像 李华
网站建设 2025/12/25 21:09:30

pdb设置内存参数

查看pdb设置的参数 set linesize 120 column pdb_name format a10 column name format a30 column value$ format a30select ps.db_uniq_name,ps.pdb_uid,p.name as pdb_name,ps.name,ps.value$ from pdb_spfile$ psjoin v$pdbs p on ps.pdb_uid p.con_uid order by 1, 2, …

作者头像 李华
网站建设 2025/12/27 0:05:31

索引的原理

一、索引的核心思想:空间换时间代价:索引需要占用额外的存储空间,并且会在数据增删改时引入额外的维护开销。收益:通过预先建立并维护一个更小的、针对性更强的数据结构,使得查询时能以远快于遍历全表的速度定位到目标…

作者头像 李华
网站建设 2025/12/25 21:04:31

基于大数据对B站热门视频的数据分析与数据研究系统(程序+文档+讲解)

课题介绍在 B 站内容生态精细化运营、创作者赋能需求下,传统热门视频分析存在 “维度单一、实时性差、规律挖掘不足” 的痛点,基于大数据技术构建的 B 站热门视频数据分析与研究系统,适配平台运营人员、UP 主、数据分析师等角色,整…

作者头像 李华
网站建设 2025/12/27 3:49:27

学长亲荐10个AI论文软件,助你轻松搞定本科毕业论文!

学长亲荐10个AI论文软件,助你轻松搞定本科毕业论文! 论文写作的“隐形助手”,你真的了解吗? 在当今这个信息爆炸的时代,AI 工具已经成为许多本科生撰写毕业论文时不可或缺的帮手。无论是内容创作、逻辑梳理&#xff0c…

作者头像 李华
网站建设 2025/12/27 4:28:19

佳明自动驾驶系统成功实现小型飞机无人干预自动着陆

美国联邦航空管理局证实,佳明公司的自动着陆产品在首次实际紧急情况应用中取得成功,一架小型飞机在科罗拉多州落基山都市机场完全依靠自动化系统安全紧急降落。佳明紧急自动着陆系统的设计目标是在"飞行员无法驾驶的紧急情况下自动接管飞行的完全控…

作者头像 李华