diff --git a/android-tv/build.sh b/android-tv/build.sh index 41c8819..86dcaca 100755 --- a/android-tv/build.sh +++ b/android-tv/build.sh @@ -7,16 +7,16 @@ set -e echo "=== IPTV Android TV 构建 ===" # 检查 UI 构建产物 -if [ ! -d "../ui/dist-web" ]; then - echo "错误: 未找到 ../ui/dist-web 目录" - echo "请先构建 Web UI: cd ../ui && npm run build" +if [ ! -d "../ui/dist/tv" ]; then + echo "错误: 未找到 ../ui/dist/tv 目录" + echo "请先构建 Web UI: cd ../ui && npm run build:tv" exit 1 fi # 复制 Web 资源到 Android assets echo "复制 Web 资源..." mkdir -p app/src/main/assets/www -cp -r ../ui/dist-web/* app/src/main/assets/www/ +cp -r ../ui/dist/tv/* app/src/main/assets/www/ # 统计文件 echo "已复制文件数量:" diff --git a/android/build.sh b/android/build.sh index 31d60aa..ced2032 100755 --- a/android/build.sh +++ b/android/build.sh @@ -7,16 +7,16 @@ set -e echo "=== IPTV Android 构建 ===" # 检查 UI 构建产物 -if [ ! -d "../ui/dist-web" ]; then - echo "错误: 未找到 ../ui/dist-web 目录" - echo "请先构建 Web UI: cd ../ui && npm run build" +if [ ! -d "../ui/dist/android" ]; then + echo "错误: 未找到 ../ui/dist/android 目录" + echo "请先构建 Web UI: cd ../ui && npm run build:android" exit 1 fi # 复制 Web 资源到 Android assets echo "复制 Web 资源..." mkdir -p app/src/main/assets/www -cp -r ../ui/dist-web/* app/src/main/assets/www/ +cp -r ../ui/dist/android/* app/src/main/assets/www/ # 统计文件 echo "已复制文件数量:" diff --git a/build-mac.sh b/build-mac.sh index 767e59b..f2c362b 100755 --- a/build-mac.sh +++ b/build-mac.sh @@ -17,8 +17,8 @@ echo "✓ Rust 已安装 ($(cargo --version))" echo "📦 步骤 1/4: 构建 ui 应用..." cd ui npm install -npm run build -cp -r public/api dist-web/ +npm run build:desktop +cp -r public/api dist/desktop/ cd .. # 步骤2: 安装 Tauri 依赖 diff --git a/desktop/src-tauri/tauri.conf.json b/desktop/src-tauri/tauri.conf.json index 1def1a4..b86268c 100644 --- a/desktop/src-tauri/tauri.conf.json +++ b/desktop/src-tauri/tauri.conf.json @@ -2,8 +2,8 @@ "build": { "beforeBuildCommand": "", "beforeDevCommand": "", - "devPath": "../../ui/dist-web", - "distDir": "../../ui/dist-web", + "devPath": "../../ui/dist/desktop", + "distDir": "../../ui/dist/desktop", "withGlobalTauri": false }, "tauri": { diff --git a/ui/.env.android b/ui/.env.android new file mode 100644 index 0000000..741a07c --- /dev/null +++ b/ui/.env.android @@ -0,0 +1,4 @@ +VITE_PLATFORM=android +VITE_API_BASE=/api +VITE_STORAGE_TYPE=android +VITE_ANDROID_ASSET=true diff --git a/ui/.env.desktop b/ui/.env.desktop new file mode 100644 index 0000000..3b026e3 --- /dev/null +++ b/ui/.env.desktop @@ -0,0 +1,3 @@ +VITE_PLATFORM=desktop +VITE_API_BASE=/api +VITE_STORAGE_TYPE=indexeddb diff --git a/ui/.env.tv b/ui/.env.tv new file mode 100644 index 0000000..8fe1332 --- /dev/null +++ b/ui/.env.tv @@ -0,0 +1,5 @@ +VITE_PLATFORM=tv +VITE_API_BASE=/api +VITE_STORAGE_TYPE=android +VITE_ANDROID_ASSET=true +VITE_TV_MODE=true diff --git a/ui/.env.web b/ui/.env.web new file mode 100644 index 0000000..b8ec929 --- /dev/null +++ b/ui/.env.web @@ -0,0 +1,3 @@ +VITE_PLATFORM=web +VITE_API_BASE=/api +VITE_STORAGE_TYPE=indexeddb diff --git a/ui/package.json b/ui/package.json index d2f8d5d..62f1cc4 100644 --- a/ui/package.json +++ b/ui/package.json @@ -4,7 +4,11 @@ "type": "module", "scripts": { "dev": "vite", - "build": "vite build", + "build": "vite build --mode production", + "build:web": "vite build --mode web", + "build:desktop": "vite build --mode desktop", + "build:android": "vite build --mode android", + "build:tv": "vite build --mode tv", "preview": "vite preview" }, "dependencies": { diff --git a/ui/vite.config.js b/ui/vite.config.js index 6ce713c..bb56387 100644 --- a/ui/vite.config.js +++ b/ui/vite.config.js @@ -1,10 +1,26 @@ -import { defineConfig } from 'vite' +import { defineConfig, loadEnv } from 'vite' import vue from '@vitejs/plugin-vue' +import { resolve } from 'path' -export default defineConfig({ - plugins: [vue()], - base: './', - build: { - outDir: 'dist-web' +export default defineConfig(({ mode }) => { + // 加载对应的环境变量 + const env = loadEnv(mode, process.cwd(), 'VITE_') + const platform = env.VITE_PLATFORM || 'web' + + return { + plugins: [vue()], + base: './', + build: { + outDir: `dist/${platform}`, + emptyOutDir: true, + }, + resolve: { + alias: { + '@': resolve(__dirname, 'src'), + }, + }, + define: { + __PLATFORM__: JSON.stringify(platform), + }, } }) diff --git a/web/Dockerfile b/web/Dockerfile index 973ebbb..01ff5e2 100644 --- a/web/Dockerfile +++ b/web/Dockerfile @@ -8,7 +8,7 @@ WORKDIR /app # 复制前端代码 COPY ../ui ./ui WORKDIR /app/ui -RUN npm install && npm run build +RUN npm install && npm run build:web # 阶段2:运行服务端 FROM node:18-alpine @@ -23,7 +23,7 @@ RUN npm install --production COPY src ./src # 复制构建好的前端 -COPY --from=builder /app/ui/dist-web ./public +COPY --from=builder /app/ui/dist/web ./public # 暴露端口 EXPOSE 3000