- API 路由统一: 移除 /api/h5/,统一 /api/pms/ 入口 - 二进制改名: api-server -> pms-api(与服务名一致) - nginx: 合并 /api/ + /pms/api/ 为 /api/pms/ - 新增 docs/API.md 接口文档 - 后端: CabinetDetail 增加 rssi/pow_fail/address/soc 等字段 - Redis 管道批量读取仓体实时数据(SOC/电压/电流/功率) - DB: 所有 TIMESTAMP 列改为 DATETIME(修复类型不匹配) - 用户管理: 新增创建时间/修改时间列,状态改用 Switch - 角色管理/用户管理: 操作按钮改为图标 - PC 设备详情: 基本信息补全 RSSI/ICCID/电源/地址 - PC 卡片: 通道统计改用 Lucide 图标,颜色统一 - PC 二维码: canvas 渲染,含编号文字,支持右键下载 - H5: 按 uni-app 规范修正导航(navigateTo 替代 reLaunch) - H5: 详情页加返回导航条 - H5: 扫码支持摄像头(jsQR)+ ?id= 参数 - H5: 底部 tabBar 在所有页面常显 - H5: 首页统计改为 6 项(设备/通道/空闲/充电/充满/故障) - H5: 下拉刷新 / 上拉加载 - 产品首页: 添加业务联系 - 文档: 清理过时文件,补充缺失规范章节
3.1 KiB
3.1 KiB
name, description
| name | description |
|---|---|
| features-env | Environment variables, .env files, and modes in Vite |
Environment Variables and Modes
Built-in Constants
Available via import.meta.env:
| Constant | Description |
|---|---|
import.meta.env.MODE |
App mode ('development' or 'production') |
import.meta.env.BASE_URL |
Base URL from base config |
import.meta.env.PROD |
true in production |
import.meta.env.DEV |
true in development |
import.meta.env.SSR |
true in server-side rendering |
if (import.meta.env.DEV) {
console.log('Development mode')
// Tree-shaken in production
}
Custom Environment Variables
Only variables prefixed with VITE_ are exposed to client code:
# .env
VITE_API_URL=https://api.example.com
DB_PASSWORD=secret # NOT exposed to client
console.log(import.meta.env.VITE_API_URL) // "https://api.example.com"
console.log(import.meta.env.DB_PASSWORD) // undefined
Custom Prefix
export default defineConfig({
envPrefix: ['VITE_', 'APP_'] // Expose VITE_* and APP_*
})
.env Files
Load order (later has higher priority):
.env # Always loaded
.env.local # Always loaded, gitignored
.env.[mode] # Only in specified mode
.env.[mode].local # Only in specified mode, gitignored
Variable Expansion
# .env
KEY=123
EXPANDED=test$KEY # test123
ESCAPED=test\$foo # test$foo (escaped)
Modes
# Development mode (default for dev)
vite
# Production mode (default for build)
vite build
# Custom mode
vite build --mode staging
Create mode-specific env file:
# .env.staging
VITE_APP_TITLE=My App (staging)
NODE_ENV=production # Still production build
NODE_ENV vs Mode
| Command | NODE_ENV | Mode |
|---|---|---|
vite build |
production |
production |
vite build --mode development |
production |
development |
NODE_ENV=development vite build |
development |
production |
TypeScript IntelliSense
Create type declarations for custom env variables:
// vite-env.d.ts
interface ImportMetaEnv {
readonly VITE_APP_TITLE: string
readonly VITE_API_URL: string
}
interface ImportMeta {
readonly env: ImportMetaEnv
}
For strict typing (disallow unknown keys):
interface ViteTypeOptions {
strictImportMetaEnv: unknown
}
HTML Replacement
Use %VARIABLE% syntax in HTML:
<title>%VITE_APP_TITLE%</title>
<p>Mode: %MODE%</p>
Non-existent variables are left as-is (not replaced with undefined).
Loading Env in Config
Env vars are NOT available in vite.config.ts automatically:
import { defineConfig, loadEnv } from 'vite'
export default defineConfig(({ mode }) => {
const env = loadEnv(mode, process.cwd(), '') // '' loads all vars
return {
define: {
__APP_ENV__: JSON.stringify(env.APP_ENV)
}
}
})
Security Notes
- Add
*.localto.gitignore VITE_*variables end up in client bundle - no secrets- Never set
envPrefixto''(exposes everything)