diff --git a/apps/edit-docs/package.json b/apps/edit-docs/package.json index e23bb59da..3fef3ce0e 100644 --- a/apps/edit-docs/package.json +++ b/apps/edit-docs/package.json @@ -14,28 +14,26 @@ "nx": { "name": "edit-docs", "targets": { - "postbuild": { + "rebuild-deps": { "executor": "nx:run-commands", - "dependsOn": [ - "build" - ], + "dependsOn": [ "build" ], "defaultConfiguration": "default", "cache": true, "configurations": { "default": { - "command": "electron-rebuild", - "cwd": "{projectRoot}/dist" + "command": "cross-env DEBUG=* tsx scripts/rebuild.ts", + "cwd": "{projectRoot}" }, "nixos": { - "command": "electron-rebuild -v $(nix-shell -p electron_35 --run \"electron --version\")", - "cwd": "{projectRoot}/dist" + "command": "electron-rebuild -f -v $(nix-shell -p electron_35 --run \"electron --version\") dist/main.js -m dist", + "cwd": "{projectRoot}" } - } + } }, "serve": { "executor": "nx:run-commands", "dependsOn": [ - "postbuild" + "rebuild-deps" ], "defaultConfiguration": "default", "configurations": { diff --git a/apps/edit-docs/scripts/rebuild.ts b/apps/edit-docs/scripts/rebuild.ts new file mode 100644 index 000000000..57bc2f71f --- /dev/null +++ b/apps/edit-docs/scripts/rebuild.ts @@ -0,0 +1,37 @@ +/** + * @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). + */ + +// TODO: Deduplicate with apps/desktop/scripts/rebuild.ts. + +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();