feat(build): 配置多平台打包输出
- 添加 .env.web/.desktop/.android/.tv 环境变量文件
- 修改 vite.config.js 支持多平台输出到 dist/{platform}/
- 添加 npm run build:web/desktop/android/tv 命令
- 更新 desktop/android/android-tv/web 各端的资源引用路径
- 更新 build-mac.sh 使用 build:desktop 命令
This commit is contained in:
parent
a143c9023c
commit
2cab50db31
@ -7,16 +7,16 @@ set -e
|
|||||||
echo "=== IPTV Android TV 构建 ==="
|
echo "=== IPTV Android TV 构建 ==="
|
||||||
|
|
||||||
# 检查 UI 构建产物
|
# 检查 UI 构建产物
|
||||||
if [ ! -d "../ui/dist-web" ]; then
|
if [ ! -d "../ui/dist/tv" ]; then
|
||||||
echo "错误: 未找到 ../ui/dist-web 目录"
|
echo "错误: 未找到 ../ui/dist/tv 目录"
|
||||||
echo "请先构建 Web UI: cd ../ui && npm run build"
|
echo "请先构建 Web UI: cd ../ui && npm run build:tv"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 复制 Web 资源到 Android assets
|
# 复制 Web 资源到 Android assets
|
||||||
echo "复制 Web 资源..."
|
echo "复制 Web 资源..."
|
||||||
mkdir -p app/src/main/assets/www
|
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 "已复制文件数量:"
|
echo "已复制文件数量:"
|
||||||
|
|||||||
@ -7,16 +7,16 @@ set -e
|
|||||||
echo "=== IPTV Android 构建 ==="
|
echo "=== IPTV Android 构建 ==="
|
||||||
|
|
||||||
# 检查 UI 构建产物
|
# 检查 UI 构建产物
|
||||||
if [ ! -d "../ui/dist-web" ]; then
|
if [ ! -d "../ui/dist/android" ]; then
|
||||||
echo "错误: 未找到 ../ui/dist-web 目录"
|
echo "错误: 未找到 ../ui/dist/android 目录"
|
||||||
echo "请先构建 Web UI: cd ../ui && npm run build"
|
echo "请先构建 Web UI: cd ../ui && npm run build:android"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 复制 Web 资源到 Android assets
|
# 复制 Web 资源到 Android assets
|
||||||
echo "复制 Web 资源..."
|
echo "复制 Web 资源..."
|
||||||
mkdir -p app/src/main/assets/www
|
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 "已复制文件数量:"
|
echo "已复制文件数量:"
|
||||||
|
|||||||
@ -17,8 +17,8 @@ echo "✓ Rust 已安装 ($(cargo --version))"
|
|||||||
echo "📦 步骤 1/4: 构建 ui 应用..."
|
echo "📦 步骤 1/4: 构建 ui 应用..."
|
||||||
cd ui
|
cd ui
|
||||||
npm install
|
npm install
|
||||||
npm run build
|
npm run build:desktop
|
||||||
cp -r public/api dist-web/
|
cp -r public/api dist/desktop/
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
# 步骤2: 安装 Tauri 依赖
|
# 步骤2: 安装 Tauri 依赖
|
||||||
|
|||||||
@ -2,8 +2,8 @@
|
|||||||
"build": {
|
"build": {
|
||||||
"beforeBuildCommand": "",
|
"beforeBuildCommand": "",
|
||||||
"beforeDevCommand": "",
|
"beforeDevCommand": "",
|
||||||
"devPath": "../../ui/dist-web",
|
"devPath": "../../ui/dist/desktop",
|
||||||
"distDir": "../../ui/dist-web",
|
"distDir": "../../ui/dist/desktop",
|
||||||
"withGlobalTauri": false
|
"withGlobalTauri": false
|
||||||
},
|
},
|
||||||
"tauri": {
|
"tauri": {
|
||||||
|
|||||||
4
ui/.env.android
Normal file
4
ui/.env.android
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
VITE_PLATFORM=android
|
||||||
|
VITE_API_BASE=/api
|
||||||
|
VITE_STORAGE_TYPE=android
|
||||||
|
VITE_ANDROID_ASSET=true
|
||||||
3
ui/.env.desktop
Normal file
3
ui/.env.desktop
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
VITE_PLATFORM=desktop
|
||||||
|
VITE_API_BASE=/api
|
||||||
|
VITE_STORAGE_TYPE=indexeddb
|
||||||
5
ui/.env.tv
Normal file
5
ui/.env.tv
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
VITE_PLATFORM=tv
|
||||||
|
VITE_API_BASE=/api
|
||||||
|
VITE_STORAGE_TYPE=android
|
||||||
|
VITE_ANDROID_ASSET=true
|
||||||
|
VITE_TV_MODE=true
|
||||||
3
ui/.env.web
Normal file
3
ui/.env.web
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
VITE_PLATFORM=web
|
||||||
|
VITE_API_BASE=/api
|
||||||
|
VITE_STORAGE_TYPE=indexeddb
|
||||||
@ -4,7 +4,11 @@
|
|||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"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"
|
"preview": "vite preview"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
@ -1,10 +1,26 @@
|
|||||||
import { defineConfig } from 'vite'
|
import { defineConfig, loadEnv } from 'vite'
|
||||||
import vue from '@vitejs/plugin-vue'
|
import vue from '@vitejs/plugin-vue'
|
||||||
|
import { resolve } from 'path'
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig(({ mode }) => {
|
||||||
|
// 加载对应的环境变量
|
||||||
|
const env = loadEnv(mode, process.cwd(), 'VITE_')
|
||||||
|
const platform = env.VITE_PLATFORM || 'web'
|
||||||
|
|
||||||
|
return {
|
||||||
plugins: [vue()],
|
plugins: [vue()],
|
||||||
base: './',
|
base: './',
|
||||||
build: {
|
build: {
|
||||||
outDir: 'dist-web'
|
outDir: `dist/${platform}`,
|
||||||
|
emptyOutDir: true,
|
||||||
|
},
|
||||||
|
resolve: {
|
||||||
|
alias: {
|
||||||
|
'@': resolve(__dirname, 'src'),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
define: {
|
||||||
|
__PLATFORM__: JSON.stringify(platform),
|
||||||
|
},
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@ -8,7 +8,7 @@ WORKDIR /app
|
|||||||
# 复制前端代码
|
# 复制前端代码
|
||||||
COPY ../ui ./ui
|
COPY ../ui ./ui
|
||||||
WORKDIR /app/ui
|
WORKDIR /app/ui
|
||||||
RUN npm install && npm run build
|
RUN npm install && npm run build:web
|
||||||
|
|
||||||
# 阶段2:运行服务端
|
# 阶段2:运行服务端
|
||||||
FROM node:18-alpine
|
FROM node:18-alpine
|
||||||
@ -23,7 +23,7 @@ RUN npm install --production
|
|||||||
COPY src ./src
|
COPY src ./src
|
||||||
|
|
||||||
# 复制构建好的前端
|
# 复制构建好的前端
|
||||||
COPY --from=builder /app/ui/dist-web ./public
|
COPY --from=builder /app/ui/dist/web ./public
|
||||||
|
|
||||||
# 暴露端口
|
# 暴露端口
|
||||||
EXPOSE 3000
|
EXPOSE 3000
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user