h5_for_production.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // 执行脚本 taro build --type h5 ,并且把环境变量 TARO_API_URL 传递过去
  2. const { execSync } = require('child_process');
  3. const path = require('path');
  4. const fs = require('fs');
  5. // 优先使用环境变量,如果不存在则使用默认值(支持部署后可配置)
  6. const TARO_API_URL = process.env.TARO_API_URL || 'http://localhost:6001';
  7. const TARO_MQTT_URL = process.env.TARO_MQTT_URL || 'ws://localhost:8083/mqtt';
  8. const rootDir = path.join(__dirname, '..'); // 项目根目录
  9. try {
  10. // 打印当前平台信息和CPU架构信息
  11. console.log(`当前操作系统平台: ${process.platform}`);
  12. console.log(`当前CPU架构: ${process.arch}`);
  13. // 检测平台和CPU架构,只有当操作系统是linux且CPU架构是arm64时才执行复制行为
  14. if (process.platform === 'linux' && process.arch === 'arm64') {
  15. console.log(`复制arm平台必须构建文件taro.linux-arm64-gnu.node到目标位置`);
  16. fs.copyFileSync(
  17. path.join(rootDir, '.build', 'taro.linux-arm64-gnu.node'),
  18. path.join(rootDir, 'node_modules', '@tarojs', 'binding', 'taro.linux-arm64-gnu.node')
  19. );
  20. console.log(`复制arm平台必须构建文件taro.linux-arm64-gnu.node到目标位置===完成`);
  21. }
  22. // 将读取的环境变量传递给子进程
  23. execSync(`npm run build:h5`, { cwd: rootDir, stdio: 'inherit', env: { ...process.env, TARO_API_URL, TARO_MQTT_URL } }, (error, stdout, stderr) => {
  24. if (error) {
  25. console.error(`Error executing command: ${error.message}`);
  26. return;
  27. }
  28. if (stderr) {
  29. console.error(`Command stderr: ${stderr}`);
  30. return;
  31. }
  32. console.log(`Command stdout: ${stdout}`);
  33. });
  34. console.log('\n✅ h5 for production 全部构建完成');
  35. } catch (err) {
  36. console.error('Failed to execute :', err.message);
  37. process.exit(1);
  38. }