icebear0828 commited on
Commit
0b9c6c8
·
1 Parent(s): 178e38e

fix: electron-builder workspace path resolution

Browse files

electron-builder resolves from/extraResources paths unreliably in npm
workspace mode. Use prepare-pack.mjs to copy root resources (config/,
public/, public-desktop/, bin/) into packages/electron/ before packing
and clean up after. Also add missing description and pin electronVersion.

packages/electron/electron-builder.yml CHANGED
@@ -1,5 +1,6 @@
1
  appId: com.codex-proxy.app
2
  productName: Codex Proxy
 
3
 
4
  publish:
5
  provider: github
@@ -9,26 +10,18 @@ publish:
9
  directories:
10
  output: release
11
 
 
 
12
  files:
13
  - dist-electron/**/*
 
 
 
14
  - electron/assets/**/*
15
  - package.json
16
  - "!node_modules"
17
  - node_modules/koffi/**
18
  - "!dist"
19
- # Include root-level runtime files (resolved relative to packages/electron/)
20
- - from: ../../config
21
- to: config
22
- filter:
23
- - "**/*"
24
- - from: ../../public
25
- to: public
26
- filter:
27
- - "**/*"
28
- - from: ../../public-desktop
29
- to: public-desktop
30
- filter:
31
- - "**/*"
32
 
33
  # Static assets unpacked from asar (filesystem access at runtime)
34
  asarUnpack:
@@ -40,7 +33,7 @@ asarUnpack:
40
 
41
  # curl-impersonate binaries as extra resources (outside asar)
42
  extraResources:
43
- - from: ../../bin/
44
  to: bin/
45
  filter:
46
  - "**/*"
 
1
  appId: com.codex-proxy.app
2
  productName: Codex Proxy
3
+ electronVersion: "35.7.5"
4
 
5
  publish:
6
  provider: github
 
10
  directories:
11
  output: release
12
 
13
+ # Pre-pack script copies config/, public/, public-desktop/, bin/ from
14
+ # monorepo root into this directory. Paths here are relative to projectDir.
15
  files:
16
  - dist-electron/**/*
17
+ - config/**/*
18
+ - public/**/*
19
+ - public-desktop/**/*
20
  - electron/assets/**/*
21
  - package.json
22
  - "!node_modules"
23
  - node_modules/koffi/**
24
  - "!dist"
 
 
 
 
 
 
 
 
 
 
 
 
 
25
 
26
  # Static assets unpacked from asar (filesystem access at runtime)
27
  asarUnpack:
 
33
 
34
  # curl-impersonate binaries as extra resources (outside asar)
35
  extraResources:
36
+ - from: bin/
37
  to: bin/
38
  filter:
39
  - "**/*"
packages/electron/electron/prepare-pack.mjs ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Copy root-level runtime resources into packages/electron/ before
3
+ * electron-builder runs, so all paths resolve relative to projectDir.
4
+ *
5
+ * Usage:
6
+ * node electron/prepare-pack.mjs # copy
7
+ * node electron/prepare-pack.mjs --clean # remove copies
8
+ */
9
+
10
+ import { cpSync, rmSync, existsSync } from "fs";
11
+ import { resolve } from "path";
12
+
13
+ const ROOT = resolve(import.meta.dirname, "..", "..", "..");
14
+ const PKG = resolve(import.meta.dirname, "..");
15
+
16
+ const DIRS = ["config", "public", "public-desktop", "bin"];
17
+ const isClean = process.argv.includes("--clean");
18
+
19
+ for (const dir of DIRS) {
20
+ const src = resolve(ROOT, dir);
21
+ const dest = resolve(PKG, dir);
22
+
23
+ if (isClean) {
24
+ if (existsSync(dest)) {
25
+ rmSync(dest, { recursive: true });
26
+ console.log(`[prepare-pack] removed ${dir}/`);
27
+ }
28
+ } else {
29
+ if (!existsSync(src)) {
30
+ console.warn(`[prepare-pack] skipping ${dir}/ (not found at ${src})`);
31
+ continue;
32
+ }
33
+ cpSync(src, dest, { recursive: true });
34
+ console.log(`[prepare-pack] copied ${dir}/ → packages/electron/${dir}/`);
35
+ }
36
+ }
packages/electron/package.json CHANGED
@@ -1,16 +1,19 @@
1
  {
2
  "name": "@codex-proxy/electron",
3
  "version": "1.0.57",
 
4
  "private": true,
5
  "main": "dist-electron/main.cjs",
6
  "author": "codex-proxy",
7
  "scripts": {
8
  "build": "node electron/build.mjs",
9
  "dev": "cd ../.. && npm run build && cd packages/electron && npm run build && electron .",
 
10
  "pack": "npx electron-builder --config electron-builder.yml",
11
- "pack:win": "npx electron-builder --config electron-builder.yml --win",
12
- "pack:mac": "npx electron-builder --config electron-builder.yml --mac",
13
- "pack:linux": "npx electron-builder --config electron-builder.yml --linux"
 
14
  },
15
  "dependencies": {
16
  "electron-updater": "^6.3.0"
 
1
  {
2
  "name": "@codex-proxy/electron",
3
  "version": "1.0.57",
4
+ "description": "Codex Proxy desktop app (Electron shell)",
5
  "private": true,
6
  "main": "dist-electron/main.cjs",
7
  "author": "codex-proxy",
8
  "scripts": {
9
  "build": "node electron/build.mjs",
10
  "dev": "cd ../.. && npm run build && cd packages/electron && npm run build && electron .",
11
+ "prepack": "node electron/prepare-pack.mjs",
12
  "pack": "npx electron-builder --config electron-builder.yml",
13
+ "postpack": "node electron/prepare-pack.mjs --clean",
14
+ "pack:win": "npm run prepack && npx electron-builder --config electron-builder.yml --win && npm run postpack",
15
+ "pack:mac": "npm run prepack && npx electron-builder --config electron-builder.yml --mac && npm run postpack",
16
+ "pack:linux": "npm run prepack && npx electron-builder --config electron-builder.yml --linux && npm run postpack"
17
  },
18
  "dependencies": {
19
  "electron-updater": "^6.3.0"