feat(desktop): packaging (C2) : prepare-server, fetch-node, electron-builder
Some checks failed
CI / Build & test (Node 24) (push) Has been cancelled
CI / Pack & boot smoke (Node 22) (push) Has been cancelled
CI / No em/en dashes (push) Has been cancelled
CI / Build & test (Node 22) (push) Has been cancelled

scripts/prepare-server.mjs : rebuild forcé shared+server (évite la non-idempotence du prepack), npm pack du daemon (tarball autonome), extraction, strip des devDependencies (dont @arboretum/shared inliné, non publié), npm install --omit=dev des deps runtime avec le bon prebuild node-pty (cross via npm_config_platform/arch). scripts/fetch-node.mjs : Node standalone épinglé (22.21.1) vérifié SHA256 -> build/node.

electron-builder.yml : dist/ en ASAR ; build/server et build/node en extraResources (hors ASAR pour les .node) ; cibles Linux (AppImage+deb), Windows (nsis+portable), macOS (dmg/zip non signé) ; publish generic -> release Gitea. Scripts dist:linux/win/mac.

Vérifié : fetch-node (Node bundlé + node:sqlite), prepare-server (structure complète), et la chaîne runtime complète (Node bundlé exécute le daemon empaqueté : handshake + session bash via node-pty OK). Le wrapping electron-builder est une étape machine.
This commit is contained in:
2026-07-17 17:59:32 +02:00
parent ae7ede6684
commit 82682b0a37
5 changed files with 4576 additions and 4 deletions

View File

@@ -8,11 +8,17 @@
"scripts": {
"typecheck": "tsc -p . --noEmit",
"build": "npm run typecheck && node esbuild.mjs",
"dev": "node esbuild.mjs && electron ."
"dev": "node esbuild.mjs && electron .",
"prepare:server": "node scripts/prepare-server.mjs",
"prepare:node": "node scripts/fetch-node.mjs",
"dist:linux": "npm run build && npm run prepare:server -- --platform=linux && npm run prepare:node -- --platform=linux && electron-builder --linux",
"dist:win": "npm run build && npm run prepare:server -- --platform=win32 && npm run prepare:node -- --platform=win32 && electron-builder --win",
"dist:mac": "npm run build && npm run prepare:server -- --platform=darwin && npm run prepare:node -- --platform=darwin && electron-builder --mac"
},
"devDependencies": {
"@types/node": "^22.10.0",
"electron": "^33.0.0",
"electron-builder": "^25.1.0",
"esbuild": "^0.21.0",
"typescript": "^5.7.0"
}