ZhaoShanGeng commited on
Commit
91281d5
·
1 Parent(s): 4a6722f

perf: 只打包对应平台的 bin 文件

Browse files

- Linux x64 只打包 antigravity_requester_linux_amd64
- Windows x64 只打包 antigravity_requester_windows_amd64.exe
- Linux ARM64 只打包 antigravity_requester_android_arm64
- 减少约 16MB 的镜像大小

Files changed (1) hide show
  1. scripts/build.js +37 -11
scripts/build.js CHANGED
@@ -49,6 +49,15 @@ const outputNameMap = {
49
  'node18-macos-arm64': 'antigravity-macos-arm64'
50
  };
51
 
 
 
 
 
 
 
 
 
 
52
  console.log('📦 Step 1: Bundling with esbuild...');
53
 
54
  // 使用 esbuild 打包成 CommonJS
@@ -196,7 +205,7 @@ try {
196
  console.log(' ✓ Copied public directory');
197
  }
198
 
199
- // 复制 bin 目录(使用系统命令,因为 fs.cpSync 可能在大文件上失败)
200
  const binSrcDir = path.join(rootDir, 'src', 'bin');
201
  const binDestDir = path.join(distDir, 'bin');
202
  if (fs.existsSync(binSrcDir)) {
@@ -205,17 +214,34 @@ try {
205
  }
206
  fs.mkdirSync(binDestDir, { recursive: true });
207
 
208
- // 使用系统命令复制
209
- try {
210
- if (process.platform === 'win32') {
211
- execSync(`xcopy /E /I /Y "${binSrcDir}" "${binDestDir}"`, { stdio: 'pipe', shell: true });
212
- } else {
213
- execSync(`cp -r "${binSrcDir}"/* "${binDestDir}/"`, { stdio: 'pipe', shell: true });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
214
  }
215
- console.log(' ✓ Copied bin directory');
216
- } catch (err) {
217
- console.error(' ⚠ Warning: Failed to copy bin directory:', err.message);
218
- console.log(' Please manually copy src/bin to dist/bin');
219
  }
220
  }
221
 
 
49
  'node18-macos-arm64': 'antigravity-macos-arm64'
50
  };
51
 
52
+ // 平台对应的 bin 文件映射
53
+ const binFileMap = {
54
+ 'node18-win-x64': 'antigravity_requester_windows_amd64.exe',
55
+ 'node18-linux-x64': 'antigravity_requester_linux_amd64',
56
+ 'node18-linux-arm64': 'antigravity_requester_android_arm64', // ARM64 使用 Android 版本
57
+ 'node18-macos-x64': 'antigravity_requester_linux_amd64', // macOS x64 暂用 Linux 版本
58
+ 'node18-macos-arm64': 'antigravity_requester_android_arm64' // macOS ARM64 暂用 Android 版本
59
+ };
60
+
61
  console.log('📦 Step 1: Bundling with esbuild...');
62
 
63
  // 使用 esbuild 打包成 CommonJS
 
205
  console.log(' ✓ Copied public directory');
206
  }
207
 
208
+ // 复制 bin 目录(只复制对应平台的文件)
209
  const binSrcDir = path.join(rootDir, 'src', 'bin');
210
  const binDestDir = path.join(distDir, 'bin');
211
  if (fs.existsSync(binSrcDir)) {
 
214
  }
215
  fs.mkdirSync(binDestDir, { recursive: true });
216
 
217
+ // 只复制对应平台的 bin 文件
218
+ const targetBinFiles = isMultiTarget
219
+ ? [...new Set(targets.map(t => binFileMap[t]).filter(Boolean))] // 多目标:去重后的所有文件
220
+ : [binFileMap[resolvedTarget]].filter(Boolean); // 单目标:只复制一个文件
221
+
222
+ if (targetBinFiles.length > 0) {
223
+ for (const binFile of targetBinFiles) {
224
+ const srcPath = path.join(binSrcDir, binFile);
225
+ const destPath = path.join(binDestDir, binFile);
226
+ if (fs.existsSync(srcPath)) {
227
+ fs.copyFileSync(srcPath, destPath);
228
+ console.log(` ✓ Copied bin/${binFile}`);
229
+ } else {
230
+ console.warn(` ⚠ Warning: bin/${binFile} not found`);
231
+ }
232
+ }
233
+ } else {
234
+ // 如果没有映射,复制所有文件(兼容旧行为)
235
+ try {
236
+ if (process.platform === 'win32') {
237
+ execSync(`xcopy /E /I /Y "${binSrcDir}" "${binDestDir}"`, { stdio: 'pipe', shell: true });
238
+ } else {
239
+ execSync(`cp -r "${binSrcDir}"/* "${binDestDir}/"`, { stdio: 'pipe', shell: true });
240
+ }
241
+ console.log(' ✓ Copied all bin files');
242
+ } catch (err) {
243
+ console.error(' ⚠ Warning: Failed to copy bin directory:', err.message);
244
  }
 
 
 
 
245
  }
246
  }
247