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/构建阻塞问题
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
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"),
|
||||
},
|
||||
};
|
||||
});
|
||||
Reference in New Issue
Block a user