Pārlūkot izejas kodu

chore(packaging): add electron packaging script and npm script for windows platform

sw 3 nedēļas atpakaļ
vecāks
revīzija
3be590723d
2 mainītis faili ar 75 papildinājumiem un 0 dzēšanām
  1. 74 0
      .build/h5_for_electron.build.win.x64.js
  2. 1 0
      package.json

+ 74 - 0
.build/h5_for_electron.build.win.x64.js

@@ -0,0 +1,74 @@
+// 执行脚本 taro build --type h5  ,并且把环境变量 TARO_API_URL  传递过去
+
+const { execSync } = require('child_process');
+const fs = require('fs');
+const path = require('path');
+
+function isCI(){
+    const isCI = process.env.CI === 'true' || !!process.env.GITHUB_ACTIONS;
+    return isCI;
+}
+
+function getGhToken() {
+  // 1. 在 GitHub Actions 里官方会注入 ACTIONS_RUNTIME_TOKEN 或 CI=true
+  const isCI = process.env.CI === 'true' || !!process.env.GITHUB_ACTIONS;
+
+  if (isCI) {
+    console.log(`you are running in ic and the GH_token is ${process.env.GH_TOKEN}`)
+    // CI 环境:直接拿 secret(工作流里必须 env:{GH_TOKEN:${{secrets.GH_TOKEN}}})
+    const token = process.env.GH_TOKEN;
+    if (!token) throw new Error('CI 环境缺少 GH_TOKEN,请检查 workflow yaml');
+    return token;
+  }
+
+  // 2. 本地开发:优先读本地 ~/.gh-token(自己放的),没有再读环境变量,还没有就空
+  try {
+    return readFileSync(join(require('os').homedir(), '.gh-token'), 'utf8').trim();
+  } catch {
+    return process.env.GH_TOKEN || '';
+  }
+}
+
+const TARO_API_URL = 'http://localhost:6001'; // 远程地址,这里写死,要做成部署后可配置
+const TARO_MQTT_URL ='ws://localhost:8083/mqtt';
+const rootDir = path.join(__dirname, '..');          // 项目根目录
+
+
+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}`);
+});
+
+function run(cmd,env={}) {
+    console.log(`\n>>> ${cmd}`);
+    try {
+        execSync(cmd, { stdio: 'inherit', cwd: process.cwd() ,env:env});
+    } catch (e) {
+        console.error(`命令失败: ${cmd}`, e.message);
+        exit(1);
+    }
+}
+
+try {
+    const GH_TOKEN = getGhToken();  // CI/本地 都能拿到合适值
+    const cmd = isCI()
+        ? 'npx electron-builder --config electron-builder.json --win --publish always'
+        : 'npx electron-builder --config electron-builder.json --win ';
+    execSync(cmd, {
+        stdio: 'inherit',
+        cwd: process.cwd(),
+        env: { ...process.env, GH_TOKEN }   // 关键:仅追加 token,其他不动
+    });
+    
+    console.log('\n✅ 全部构建完成');
+} catch (err) {
+    console.error('Failed to execute :', err.message);
+    process.exit(1);
+}

+ 1 - 0
package.json

@@ -40,6 +40,7 @@
     "build:android": "node ./.build/build-android.js",
     "e2e": "npx cypress run --headed",
     "pack:linux": "node ./.build/h5_for_electron.build.linux.arm.js",
+    "pack:win": "node ./.build/h5_for_electron.build.win.x64.js",
     "pkg": "node ./.build/h5_for_webserver.build.js"
   },
   "browserslist": [