Spaces:
Paused
Paused
icebear0828 commited on
Commit ·
0b9c6c8
1
Parent(s): 178e38e
fix: electron-builder workspace path resolution
Browse fileselectron-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:
|
| 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 |
-
"
|
| 12 |
-
"pack:
|
| 13 |
-
"pack:
|
|
|
|
| 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"
|