RyPlus-Uni 前端配置文件说明文档
技术栈概述
本项目基于 Vue 3 + TypeScript + Vite 构建,采用现代化前端开发技术栈:
- 构建工具: Vite 5.x
- 前端框架: Vue 3.4+ (Composition API)
- 开发语言: TypeScript 5.x
- UI框架: Element Plus
- CSS框架: UnoCSS (原子化CSS)
- 状态管理: Pinia
- 路由管理: Vue Router 4.x
- 代码规范: ESLint + Prettier
配置文件结构
1. 环境变量配置
1.1 基础环境配置 (.env
)
bash
# ===== 应用基础配置 =====
VITE_APP_ID = 'ryplus_uni' # 应用唯一标识符
VITE_APP_TITLE = 'ryplus-uni后台管理' # 浏览器标签页标题
VITE_APP_CONTEXT_PATH = '/' # 应用访问路径前缀
VITE_ENABLE_FRONTEND = 'false' # 是否启用前台首页
# ===== 安全配置 =====
VITE_APP_API_ENCRYPT = 'true' # 接口加密开关
VITE_APP_RSA_PUBLIC_KEY = 'MFww...' # RSA加密公钥(与后端配对)
VITE_APP_RSA_PRIVATE_KEY = 'MIIBOw...' # RSA解密私钥(与后端配对)
# ===== 功能开关 =====
VITE_APP_WEBSOCKET = 'false' # WebSocket功能开关
VITE_APP_SSE = 'true' # Server-Sent Events开关
# ===== 外部服务地址 =====
VITE_APP_GIT_URL = '' # 代码仓库地址
VITE_APP_DOC_URL = 'https://ruoyi.plus' # 项目文档地址
1.2 开发环境配置 (.env.development
)
bash
VITE_APP_ENV = 'development' # 环境标识
VITE_APP_PORT = '80' # 开发服务器端口
VITE_APP_BASE_API = '/dev-api' # API接口前缀
VITE_APP_BASE_API_PORT = '5500' # 后端服务端口
# ===== 外部服务地址 =====
VITE_APP_MONITOR_ADMIN = 'http://127.0.0.1:9090/admin/applications'
VITE_APP_SNAILJOB_ADMIN = 'http://127.0.0.1:8800/snail-job'
1.3 生产环境配置 (.env.production
)
bash
VITE_APP_ENV = 'production' # 生产环境标识
VITE_APP_BASE_API = '/ryplus_uni' # 生产环境API前缀
VITE_BUILD_COMPRESS = 'gzip' # 构建压缩方式
# ===== 外部服务地址 =====
VITE_APP_MONITOR_ADMIN = '/admin/applications'
VITE_APP_SNAILJOB_ADMIN = '/snail-job'
环境变量命名规范:
- 所有环境变量必须以
VITE_
开头才能在前端代码中访问 - 使用
SCREAMING_SNAKE_CASE
命名风格 - 按功能分组,便于管理和维护
2. 构建配置
2.1 Vite 主配置 (vite.config.ts
)
typescript
export default async ({ command, mode }: ConfigEnv): Promise<UserConfig> => {
const env = loadEnv(mode, path.resolve(process.cwd(), 'env'))
return defineConfig({
// 环境变量目录
envDir: './env',
// 应用基础路径
base: env.VITE_APP_CONTEXT_PATH,
// 路径别名配置
resolve: {
alias: {
'@': path.join(process.cwd(), './src') // @ 指向 src 目录
},
extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
},
// 开发服务器配置
server: {
host: '0.0.0.0', // 监听所有地址
port: Number(env.VITE_APP_PORT), // 服务端口
open: true, // 自动打开浏览器
proxy: { // 代理配置解决跨域
[env.VITE_APP_BASE_API]: {
target: `http://localhost:${env.VITE_APP_BASE_API_PORT}`,
changeOrigin: true,
ws: true,
rewrite: (path) => path.replace(new RegExp('^' + env.VITE_APP_BASE_API), '')
}
}
}
})
}
关键配置说明:
- envDir: 自定义环境变量文件目录
- base: 应用部署的基础路径,支持子路径部署
- proxy: 开发环境API代理,解决跨域问题
- alias: 路径别名,简化模块导入
- optimizeDeps: 依赖预构建,提升首次加载速度
3. TypeScript 配置
3.1 TypeScript 编译配置 (tsconfig.json
)
json
{
"compilerOptions": {
"baseUrl": ".",
// 模块解析基准目录
"target": "ES2020",
// 编译目标版本
"module": "ESNext",
// 模块系统
"moduleResolution": "Bundler",
// 模块解析策略
"lib": [
"ESNext",
"DOM",
"DOM.Iterable"
],
// 包含的库文件
// 严格模式配置
"strict": true,
// 启用所有严格检查
"noImplicitAny": false,
// 允许隐式any类型
"strictNullChecks": false,
// 关闭严格null检查
// 其他配置
"allowJs": true,
// 允许编译JS文件
"jsx": "preserve",
// 保留JSX语法
"sourceMap": true,
// 生成source map
"resolveJsonModule": true,
// 支持导入JSON
"esModuleInterop": true,
// ES模块互操作
"experimentalDecorators": true,
// 装饰器支持
// 路径映射
"paths": {
"@/*": [
"./src/*"
]
},
// 类型定义
"types": [
"node",
"vite/client"
]
},
"include": [
"src/**/*.ts",
"src/**/*.vue",
"vite.config.ts",
"eslint.config.ts"
],
"exclude": [
"node_modules",
"dist",
"src/**/__tests__/*"
]
}
4. 代码规范配置
4.1 ESLint 配置 (eslint.config.ts
)
typescript
export default defineConfigWithVueTs(
// 检查的文件类型
{
files: ['**/*.{js,cjs,ts,mts,tsx,vue}']
},
// 忽略的文件和目录
{
ignores: [
'**/dist/**', // 构建输出目录
'**/coverage/**', // 测试覆盖率报告
'**/locales/**/*.ts' // 语言文件
]
},
// 自定义规则
{
plugins: { prettier },
rules: {
// TypeScript 相关规则
'@typescript-eslint/no-empty-function': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-unused-vars': 'off',
// Vue 相关规则
'vue/multi-word-component-names': 'off',
'vue/valid-define-props': 'off',
'vue/no-v-model-argument': 'off',
// 强制 Prettier 格式化
'prettier/prettier': 'error'
}
}
)
ESLint 规则说明:
- 基础规则: 继承Vue和TypeScript推荐配置
- 自定义规则: 根据项目需求调整的规则
- Prettier集成: 确保代码格式化一致性
5. 样式配置
5.1 UnoCSS 配置 (uno.config.ts
)
typescript
export default defineConfig({
// 快捷方式定义
shortcuts: {
'panel-title': 'pb-[5px] font-sans leading-[1.1] font-medium text-base text-[#6379bb]...',
'flex-center': 'flex items-center justify-center',
'flex-between': 'flex items-center justify-between'
},
// 主题配置
theme: {
colors: {
// 状态颜色
'primary': 'var(--el-color-primary)',
'success': 'var(--color-success)',
'warning': 'var(--color-warning)',
'danger': 'var(--color-danger)',
// 文本颜色
'text-base': 'var(--text-color)',
'text-secondary': 'var(--text-color-secondary)',
// 背景颜色
'bg-base': 'var(--bg-color)',
'bg-page': 'var(--bg-color-page)'
},
// 间距变量
spacing: {
'sidebar': 'var(--sidebar-width)',
'header': 'var(--header-height)'
}
},
// 自定义规则
rules: [
['sidebar-width', { 'width': 'var(--sidebar-width)' }],
['scrollbar-y', { 'overflow-y': 'auto', 'overflow-x': 'hidden' }],
['text-ellipsis', { 'white-space': 'nowrap', 'overflow': 'hidden', 'text-overflow': 'ellipsis' }]
],
// 预设配置
presets: [
presetUno(), // 默认工具类
presetAttributify(), // 属性化模式
presetIcons({}), // 图标支持
presetTypography(), // 排版支持
presetWebFonts({}) // Web字体支持
]
})
UnoCSS 特性:
- 原子化CSS: 提供大量原子级样式类
- 按需生成: 只生成实际使用的样式
- 主题系统: 支持CSS变量和主题切换
- 快捷方式: 将常用样式组合定义为简单类名
开发环境配置
1. 环境要求
bash
# Node.js 版本要求
Node.js >= 18.0.0
# 包管理器(推荐使用pnpm)
pnpm >= 8.0.0
npm >= 9.0.0
yarn >= 1.22.0
2. 安装和启动
bash
# 安装依赖
pnpm install
# 启动开发服务器
pnpm dev
# 构建生产版本
pnpm build
# 代码格式化
pnpm lint:fix
# 类型检查
pnpm type-check
3. 开发服务器特性
- 热模块替换(HMR): 代码修改后即时更新
- API代理: 自动转发API请求到后端服务
- TypeScript支持: 实时类型检查和错误提示
- Vue DevTools: 支持Vue开发者工具调试
常见问题与解决方案
Q1: 开发环境接口请求失败?
A: 检查以下配置:
- 确认
VITE_APP_BASE_API_PORT
与后端服务端口一致 - 检查代理配置是否正确
- 确认后端服务已启动
Q2: 环境变量无法访问?
A: 确保环境变量:
- 以
VITE_
开头 - 在正确的
.env
文件中定义 - 重启开发服务器
💡 提示:
- 开发前请确保所有环境变量配置正确
- 生产部署时注意检查所有外部服务地址
- 定期更新依赖包版本以获得最新功能和安全修复