diff --git a/apps/desktop/package.json b/apps/desktop/package.json index f36d01cb2..ce3c52c7d 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -53,7 +53,7 @@ "cache": true, "configurations": { "default": { - "command": "electron-rebuild -f dist/main.js -m dist", + "command": "cross-env DEBUG=* tsx scripts/rebuild.ts", "cwd": "{projectRoot}" }, "nixos": { diff --git a/apps/desktop/scripts/rebuild.ts b/apps/desktop/scripts/rebuild.ts new file mode 100644 index 000000000..5f7d0c6fd --- /dev/null +++ b/apps/desktop/scripts/rebuild.ts @@ -0,0 +1,35 @@ +/** + * @module + * + * This script is used internally by the `rebuild-deps` target of the `desktop`. Normally we could use + * `electron-rebuild` CLI directly, but it would rebuild the monorepo-level dependencies and breaks + * the server build (and it doesn't expose a CLI option to override this). + */ + +import { fileURLToPath } from "url"; +import { dirname, join } from "path"; +import rebuild from "@electron/rebuild" +import { readFileSync } from "fs"; + +const scriptDir = dirname(fileURLToPath(import.meta.url)); +const rootDir = join(scriptDir, ".."); + +function getElectronVersion() { + const packageJsonPath = join(rootDir, "package.json"); + const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8")); + return packageJson.devDependencies.electron; +} + +function main() { + const distDir = join(rootDir, "dist"); + + rebuild({ + // We force the project root path to avoid electron-rebuild from rebuilding the monorepo-level dependency and breaking the server. + projectRootPath: distDir, + buildPath: distDir, + force: true, + electronVersion: getElectronVersion(), + }); +} + +main();