// 自动化部署脚本:构建后自动修正路径并复制到 public const fs = require('fs'); const path = require('path'); const SOURCE_DIR = path.join(__dirname, 'dist'); const TARGET_DIR = path.join(__dirname, '..', '..', 'public', 'tools', 'web_order_box'); // 确保目标目录存在 if (!fs.existsSync(TARGET_DIR)) { fs.mkdirSync(TARGET_DIR, { recursive: true }); } // 复制所有文件 function copyDir(src, dest) { fs.readdirSync(src).forEach(file => { const srcPath = path.join(src, file); const destPath = path.join(dest, file); if (fs.statSync(srcPath).isDirectory()) { if (!fs.existsSync(destPath)) fs.mkdirSync(destPath, { recursive: true }); copyDir(srcPath, destPath); } else { fs.copyFileSync(srcPath, destPath); } }); } copyDir(SOURCE_DIR, TARGET_DIR); // 复制字体文件到 public/assets/fonts const FONTS_SOURCE = path.join(__dirname, 'node_modules', '@expo', 'vector-icons', 'build', 'vendor', 'react-native-vector-icons', 'Fonts'); const FONTS_TARGET = path.join(TARGET_DIR, 'assets', 'fonts'); if (fs.existsSync(FONTS_SOURCE)) { if (!fs.existsSync(FONTS_TARGET)) fs.mkdirSync(FONTS_TARGET, { recursive: true }); fs.readdirSync(FONTS_SOURCE).forEach(file => { if (file.endsWith('.ttf')) { fs.copyFileSync(path.join(FONTS_SOURCE, file), path.join(FONTS_TARGET, file)); } }); console.log('✅ 字体文件已复制到 assets/fonts/'); } // 修正 index.html:添加 base 标签并修改路径为相对路径 const indexPath = path.join(TARGET_DIR, 'index.html'); let indexContent = fs.readFileSync(indexPath, 'utf-8'); // 在 head 中添加 base 标签 const baseTag = ''; if (!indexContent.includes('', ` ${baseTag}\n`); } // 将绝对路径改为相对路径(使 base 标签生效) indexContent = indexContent.replace(/src="\/_expo\//g, 'src="_expo/'); indexContent = indexContent.replace(/href="\/favicon\.ico"/g, 'href="favicon.ico"'); indexContent = indexContent.replace(/href="\/assets\//g, 'href="assets/'); // 修正字体路径 indexContent = indexContent.replace(/\/assets\/node_modules\/@expo\/vector-icons\/build\/vendor\/react-native-vector-icons\/Fonts\//g, 'assets/fonts/'); fs.writeFileSync(indexPath, indexContent, 'utf-8'); console.log('✅ 部署完成!'); console.log(`📁 目标目录:${TARGET_DIR}`); console.log('🌐 访问地址:https://traesite.umersoft.com:8975/tools/web_order_box');