// 执行脚本 taro build --type h5 ,并且把环境变量 TARO_API_URL 传递过去 const { execSync } = require('child_process'); const path = require('path'); const fs = require('fs'); // 优先使用环境变量,如果不存在则使用默认值(支持部署后可配置) // 使用 ?? 运算符,只在 undefined/null 时使用默认值,允许空字符串 const TARO_API_URL = process.env.TARO_API_URL ?? 'http://localhost:6001'; const TARO_MQTT_URL = process.env.TARO_MQTT_URL ?? 'ws://localhost:8083/mqtt'; const rootDir = path.join(__dirname, '..'); // 项目根目录 try { // 打印当前平台信息和CPU架构信息 console.log(`当前操作系统平台: ${process.platform}`); console.log(`当前CPU架构: ${process.arch}`); // 检测平台和CPU架构,只有当操作系统是linux且CPU架构是arm64时才执行复制行为 if (process.platform === 'linux' && process.arch === 'arm64') { console.log(`复制arm平台必须构建文件taro.linux-arm64-gnu.node到目标位置`); fs.copyFileSync( path.join(rootDir, '.build', 'taro.linux-arm64-gnu.node'), path.join(rootDir, 'node_modules', '@tarojs', 'binding', 'taro.linux-arm64-gnu.node') ); console.log(`复制arm平台必须构建文件taro.linux-arm64-gnu.node到目标位置===完成`); } // 将读取的环境变量传递给子进程 execSync(`npm run build:h5`, { cwd: rootDir, stdio: 'inherit', env: { ...process.env, TARO_API_URL, TARO_MQTT_URL } }, (error, stdout, stderr) => { if (error) { console.error(`Error executing command: ${error.message}`); return; } if (stderr) { console.error(`Command stderr: ${stderr}`); return; } console.log(`Command stdout: ${stdout}`); }); console.log('\n✅ h5 for production 全部构建完成'); } catch (err) { console.error('Failed to execute :', err.message); process.exit(1); }