diff --git a/_regroup/package.json b/_regroup/package.json index fd184d7e3..d6d50a66c 100644 --- a/_regroup/package.json +++ b/_regroup/package.json @@ -12,8 +12,7 @@ "server:switch": "rimraf ./node_modules/better-sqlite3 && npm install", "electron:start-no-dir": "cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_ENV=dev TRILIUM_PORT=37742 electron --inspect=5858 .", "electron:start-nix": "electron-rebuild --version 33.3.1 && cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./electron-main.ts --inspect=5858 .\"", - "electron:start-nix-no-dir": "electron-rebuild --version 33.3.1 && cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_ENV=dev TRILIUM_PORT=37742 nix-shell -p electron_33 --run \"electron ./electron-main.ts --inspect=5858 .\"", - "electron:start-prod": "npm run build:prepare-dist && cross-env TRILIUM_DATA_DIR=./data TRILIUM_ENV=prod electron ./dist/electron-main.js --inspect=5858 .", + "electron:start-nix-no-dir": "electron-rebuild --version 33.3.1 && cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_ENV=dev TRILIUM_PORT=37742 nix-shell -p electron_33 --run \"electron ./electron-main.ts --inspect=5858 .\"", "electron:start-prod-no-dir": "npm run build:prepare-dist && cross-env TRILIUM_ENV=prod electron --inspect=5858 .", "electron:start-prod-nix": "electron-rebuild --version 33.3.1 && npm run build:prepare-dist && cross-env TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./dist/electron-main.js --inspect=5858 .\"", "electron:start-prod-nix-no-dir": "electron-rebuild --version 33.3.1 && npm run build:prepare-dist && cross-env TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./dist/electron-main.js --inspect=5858 .\"", diff --git a/apps/electron/package.json b/apps/electron/package.json index 592b80bb2..e2eb7bf1e 100644 --- a/apps/electron/package.json +++ b/apps/electron/package.json @@ -20,8 +20,12 @@ "main": "index.js", "scripts": { "start": "cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev electron ./src/electron-main.ts --inspect=5858 .", + "start-prod": "npm run build:prepare-dist && cross-env TRILIUM_DATA_DIR=./data TRILIUM_ENV=prod electron ./build/src/electron-main.js --inspect=5858 .", "postinstall": "electron-rebuild", - "build:copy-dist": "tsx ./scripts/copy-dist.ts" + "build:clean": "rimraf ./dist ./build", + "build:copy-dist": "tsx ./scripts/copy-dist.ts", + "build:prepare-dist": "npm run build:clean && npm run build:copy-dist && npm run build:ts", + "build:ts": "tsc" }, "dependencies": { "better-sqlite3": "^11.9.1", diff --git a/apps/electron/scripts/copy-dist.ts b/apps/electron/scripts/copy-dist.ts index 3d8b76601..52df9b62e 100644 --- a/apps/electron/scripts/copy-dist.ts +++ b/apps/electron/scripts/copy-dist.ts @@ -1,3 +1,4 @@ +import { execSync } from "child_process"; import fs from "fs-extra"; import path from "path"; @@ -15,12 +16,13 @@ try { /** * Copy the server. */ - fs.copySync("../server/build", DEST_DIR); + fs.copySync("../server/build", path.join(DEST_DIR, "node_modules", "@triliumnext/server")); /** * Copy assets. */ const assetsToCopy = new Set([ + "./package.json", "./forge.config.cjs", "./scripts/electron-forge/desktop.ejs", "./scripts/electron-forge/sign-windows.cjs", @@ -40,6 +42,12 @@ try { fs.copySync(dir, path.join(PUBLIC_DIR, path.basename(dir))); } + /* + * Extract and rebuild the bettersqlite node module. + */ + fs.moveSync(path.join(DEST_DIR, "node_modules/@triliumnext/server/node_modules/better-sqlite3"), path.join(DEST_DIR, "node_modules/better-sqlite3")); + execSync("npm run postinstall", { cwd: DEST_DIR }); + console.log("Copying complete!") } catch(err) { diff --git a/apps/electron/tsconfig.json b/apps/electron/tsconfig.json new file mode 100644 index 000000000..863fb47e4 --- /dev/null +++ b/apps/electron/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "NodeNext", + "declaration": false, + "sourceMap": true, + "outDir": "./build/src", + "strict": true, + "noImplicitAny": true, + "resolveJsonModule": true, + "lib": ["ES2023"], + "downlevelIteration": true, + "skipLibCheck": true, + "esModuleInterop": true, + "verbatimModuleSyntax": true, + "allowJs": true + }, + "include": [ "./src/**/*.ts" ], + "files": [ + "../server/src/types.d.ts", + "../server/src/express.d.ts", + ] +} \ No newline at end of file