Wardrobe/vite.config.ts
jif2.zhang 38b5e3190a init: Wardrobe 衣物管理系统 - 项目首页、OTA 升级、Android CI/CD
- 响应式项目首页 (Landing, 含 R2 APK 下载) + 路由 /home 调整
- OTA 升级: tauri-plugin-hotswap (lib.rs/main.rs 拆分, 客户端热替换)
- OTA 服务端 (check/bundle/manifest-web) + build-ota/genkey/upload 脚本
- 密钥/凭据统一存配置中心 (signing + ota + cloudflare 分组)
- Android CI (android-* 分支) + OTA CI (手动触发), 产物上传 R2
- 修复 tsc/构建阻塞问题
2026-09-11 15:46:42 +08:00

39 lines
1.1 KiB
TypeScript

import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import { readFileSync } from "node:fs";
const host = process.env.TAURI_DEV_HOST;
function buildId() {
// YYYYMMDD.HHmmss: 每次构建生成新的 BUILD_ID, 用于 OTA/web 升级比对
const d = new Date();
const pad = (n: number) => String(n).padStart(2, "0");
return (
[d.getFullYear(), pad(d.getMonth() + 1), pad(d.getDate())].join("") +
"." +
[pad(d.getHours()), pad(d.getMinutes()), pad(d.getSeconds())].join("")
);
}
export default defineConfig(async () => {
const pkg = JSON.parse(readFileSync(new URL("./package.json", import.meta.url), "utf8"));
return {
plugins: [react()],
clearScreen: false,
server: {
port: 1420,
strictPort: true,
host: host || false,
hmr: host ? { protocol: "ws", host, port: 1421 } : undefined,
watch: {
ignored: ["**/src-tauri/**"],
},
},
// 编译期常量: 版本 + 构建号, 供 src/version.ts 使用
define: {
__BUILD_ID__: JSON.stringify(buildId()),
__APP_VERSION__: JSON.stringify(pkg.version || "0.0.0"),
},
};
});