import { exec } from 'node:child_process' import fs from 'node:fs' import path from 'node:path' import process from 'node:process' import dotenv from 'dotenv' dotenv.config({ path: path.resolve(process.cwd(), 'env/.env') }) /** * 打开开发者工具 */ function _openDevTools() { const platform = process.platform // darwin, win32, linux const { UNI_PLATFORM, NODE_ENV } = process.env // mp-weixin, mp-alipay const uniPlatformText = UNI_PLATFORM === 'mp-weixin' ? '微信小程序' : UNI_PLATFORM === 'mp-alipay' ? '支付宝小程序' : '小程序' const outputDir = NODE_ENV === 'development' ? 'dev' : 'build' // 项目路径(构建输出目录) const projectPath = path.resolve(process.cwd(), `dist/${outputDir}/${UNI_PLATFORM}`) // 检查构建输出目录是否存在 if (!fs.existsSync(projectPath)) { console.log(`❌ ${uniPlatformText}构建目录不存在:`, projectPath) return } console.log(`🚀 正在打开${uniPlatformText}开发者工具...`) // 根据不同操作系统执行不同命令 let command = '' if (platform === 'darwin') { // macOS if (UNI_PLATFORM === 'mp-weixin') { command = `/Applications/wechatwebdevtools.app/Contents/MacOS/cli -o --project "${projectPath}"` } else if (UNI_PLATFORM === 'mp-alipay') { command = `/Applications/小程序开发者工具.app/Contents/MacOS/小程序开发者工具 --p "${projectPath}"` } } else if (platform === 'win32' || platform === 'win64') { // Windows if (UNI_PLATFORM === 'mp-weixin') { let wechatDevToolPath = 'C:\\Program Files (x86)\\Tencent\\微信web开发者工具' // 获取微信开发者工具路径,添加默认值或错误处理 if (process.env.VITE_WECHAT_DEV_TOOL_PROJECT_PATH_ENABLE === 'true') { wechatDevToolPath = process.env.VITE_WECHAT_DEV_TOOL_PROJECT_PATH } if (process.env.VITE_WECHAT_DEV_TOOL_PROJECT_PATH_ENABLE === 'true' && !wechatDevToolPath) { console.log('❌ 未配置微信开发者工具路径,请在 .env 文件中设置 VITE_WECHAT_DEV_TOOL_PROJECT_PATH') return } console.log("🚀 项目输出路径:", projectPath) const cliPath = path.join(wechatDevToolPath, 'cli.bat') command = `${cliPath} open --project "${projectPath}"` } } else { // Linux 或其他系统 console.log('❌ 当前系统不支持自动打开微信开发者工具') return } exec(command, (error, stdout, stderr) => { if (error) { console.log(`❌ 打开${uniPlatformText}开发者工具失败:`, error.message) console.log(`💡 请确保${uniPlatformText}开发者工具服务端口已启用`) console.log(`💡 可以手动打开${uniPlatformText}开发者工具并导入项目:`, projectPath) return } if (stderr) { console.log('⚠️ 警告:', stderr) } console.log(`✅ ${uniPlatformText}开发者工具已打开`) if (stdout) { console.log(stdout) } }) } export default function openDevTools() { // 首次构建标记 let isFirstBuild = true return { name: 'uni-devtools', writeBundle() { if (isFirstBuild && process.env.UNI_PLATFORM?.includes('mp')) { isFirstBuild = false _openDevTools() } }, } }