feat(build): 支持桌面端多架构打包矩阵

This commit is contained in:
2026-02-15 23:26:00 +08:00
parent 627e6f9dd3
commit 8245abe217
6 changed files with 72 additions and 14 deletions

View File

@@ -21,7 +21,7 @@ mac:
- dmg - dmg
category: public.app-category.productivity category: public.app-category.productivity
extraResources: extraResources:
- from: ../server/out/server-darwin-arm64 - from: ../server/out/server-darwin-${arch}
to: server to: server
dmg: dmg:
artifactName: ${productName}-${version}-${os}-${arch}.${ext} artifactName: ${productName}-${version}-${os}-${arch}.${ext}
@@ -31,7 +31,7 @@ win:
target: target:
- portable - portable
extraResources: extraResources:
- from: ../server/out/server-windows-x64.exe - from: ../server/out/server-windows-${arch}.exe
to: server.exe to: server.exe
portable: portable:
artifactName: ${productName}-${version}-${os}-${arch}-Portable.${ext} artifactName: ${productName}-${version}-${os}-${arch}-Portable.${ext}
@@ -42,7 +42,7 @@ linux:
- AppImage - AppImage
category: Utility category: Utility
extraResources: extraResources:
- from: ../server/out/server-linux-x64 - from: ../server/out/server-linux-${arch}
to: server to: server
appImage: appImage:
artifactName: ${productName}-${version}-${os}-${arch}.${ext} artifactName: ${productName}-${version}-${os}-${arch}.${ext}

View File

@@ -8,9 +8,13 @@
"build": "electron-vite build", "build": "electron-vite build",
"dev": "electron-vite dev --watch", "dev": "electron-vite dev --watch",
"dist": "electron-builder", "dist": "electron-builder",
"dist:linux": "electron-builder --linux", "dist:linux": "bun run dist:linux:x64 && bun run dist:linux:arm64",
"dist:mac": "electron-builder --mac", "dist:linux:arm64": "electron-builder --linux --arm64",
"dist:win": "electron-builder --win", "dist:linux:x64": "electron-builder --linux --x64",
"dist:mac": "bun run dist:mac:arm64 && bun run dist:mac:x64",
"dist:mac:arm64": "electron-builder --mac --arm64",
"dist:mac:x64": "electron-builder --mac --x64",
"dist:win": "electron-builder --win --x64",
"fix": "biome check --write", "fix": "biome check --write",
"typecheck": "tsc --noEmit" "typecheck": "tsc --noEmit"
}, },

View File

@@ -10,15 +10,39 @@
"outputs": ["dist/**"] "outputs": ["dist/**"]
}, },
"dist:linux": { "dist:linux": {
"dependsOn": ["build", "@furtherverse/server#compile:linux"], "dependsOn": [
"build",
"@furtherverse/server#compile:linux:arm64",
"@furtherverse/server#compile:linux:x64"
],
"outputs": ["dist/**"]
},
"dist:linux:arm64": {
"dependsOn": ["build", "@furtherverse/server#compile:linux:arm64"],
"outputs": ["dist/**"]
},
"dist:linux:x64": {
"dependsOn": ["build", "@furtherverse/server#compile:linux:x64"],
"outputs": ["dist/**"] "outputs": ["dist/**"]
}, },
"dist:mac": { "dist:mac": {
"dependsOn": ["build", "@furtherverse/server#compile:darwin"], "dependsOn": [
"build",
"@furtherverse/server#compile:darwin:arm64",
"@furtherverse/server#compile:darwin:x64"
],
"outputs": ["dist/**"]
},
"dist:mac:arm64": {
"dependsOn": ["build", "@furtherverse/server#compile:darwin:arm64"],
"outputs": ["dist/**"]
},
"dist:mac:x64": {
"dependsOn": ["build", "@furtherverse/server#compile:darwin:x64"],
"outputs": ["dist/**"] "outputs": ["dist/**"]
}, },
"dist:win": { "dist:win": {
"dependsOn": ["build", "@furtherverse/server#compile:windows"], "dependsOn": ["build", "@furtherverse/server#compile:windows:x64"],
"outputs": ["dist/**"] "outputs": ["dist/**"]
} }
} }

View File

@@ -1,4 +1,4 @@
import { rm } from 'node:fs/promises' import { mkdir, rm } from 'node:fs/promises'
import { parseArgs } from 'node:util' import { parseArgs } from 'node:util'
const ENTRYPOINT = '.output/server/index.mjs' const ENTRYPOINT = '.output/server/index.mjs'
@@ -7,6 +7,7 @@ const OUTDIR = 'out'
const SUPPORTED_TARGETS: readonly Bun.Build.CompileTarget[] = [ const SUPPORTED_TARGETS: readonly Bun.Build.CompileTarget[] = [
'bun-windows-x64', 'bun-windows-x64',
'bun-darwin-arm64', 'bun-darwin-arm64',
'bun-darwin-x64',
'bun-linux-x64', 'bun-linux-x64',
'bun-linux-arm64', 'bun-linux-arm64',
] ]
@@ -43,7 +44,11 @@ const main = async () => {
const suffix = target.replace('bun-', '') const suffix = target.replace('bun-', '')
const outfile = `server-${suffix}` const outfile = `server-${suffix}`
await rm(OUTDIR, { recursive: true, force: true }) await mkdir(OUTDIR, { recursive: true })
await Promise.all([
rm(`${OUTDIR}/${outfile}`, { force: true }),
rm(`${OUTDIR}/${outfile}.exe`, { force: true }),
])
const result = await Bun.build({ const result = await Bun.build({
entrypoints: [ENTRYPOINT], entrypoints: [ENTRYPOINT],

View File

@@ -6,9 +6,14 @@
"scripts": { "scripts": {
"build": "vite build", "build": "vite build",
"compile": "bun compile.ts", "compile": "bun compile.ts",
"compile:darwin": "bun compile.ts --target bun-darwin-arm64", "compile:darwin": "bun run compile:darwin:arm64",
"compile:linux": "bun compile.ts --target bun-linux-x64", "compile:darwin:arm64": "bun compile.ts --target bun-darwin-arm64",
"compile:windows": "bun compile.ts --target bun-windows-x64", "compile:darwin:x64": "bun compile.ts --target bun-darwin-x64",
"compile:linux": "bun run compile:linux:x64",
"compile:linux:arm64": "bun compile.ts --target bun-linux-arm64",
"compile:linux:x64": "bun compile.ts --target bun-linux-x64",
"compile:windows": "bun run compile:windows:x64",
"compile:windows:x64": "bun compile.ts --target bun-windows-x64",
"db:generate": "drizzle-kit generate", "db:generate": "drizzle-kit generate",
"db:migrate": "drizzle-kit migrate", "db:migrate": "drizzle-kit migrate",
"db:push": "drizzle-kit push", "db:push": "drizzle-kit push",

View File

@@ -14,13 +14,33 @@
"dependsOn": ["build"], "dependsOn": ["build"],
"outputs": ["out/**"] "outputs": ["out/**"]
}, },
"compile:darwin:arm64": {
"dependsOn": ["build"],
"outputs": ["out/**"]
},
"compile:darwin:x64": {
"dependsOn": ["build"],
"outputs": ["out/**"]
},
"compile:linux": { "compile:linux": {
"dependsOn": ["build"], "dependsOn": ["build"],
"outputs": ["out/**"] "outputs": ["out/**"]
}, },
"compile:linux:arm64": {
"dependsOn": ["build"],
"outputs": ["out/**"]
},
"compile:linux:x64": {
"dependsOn": ["build"],
"outputs": ["out/**"]
},
"compile:windows": { "compile:windows": {
"dependsOn": ["build"], "dependsOn": ["build"],
"outputs": ["out/**"] "outputs": ["out/**"]
},
"compile:windows:x64": {
"dependsOn": ["build"],
"outputs": ["out/**"]
} }
} }
} }