mirror of
https://github.com/zadam/trilium.git
synced 2025-09-16 03:27:37 +08:00
feat(dx/desktop): perfect way to override bettersqlite native
This commit is contained in:
parent
16beeb2e88
commit
7fdea613ff
5 changed files with 19 additions and 10 deletions
|
@ -9,7 +9,7 @@ const workspaceRoot = join(desktopProjectRoot, "../..");
|
|||
|
||||
function copyNativeDependencies() {
|
||||
const destPath = join(desktopProjectRoot, "node_modules/better-sqlite3");
|
||||
|
||||
|
||||
if (existsSync(destPath)) {
|
||||
rmSync(destPath, { recursive: true });
|
||||
}
|
||||
|
@ -30,10 +30,7 @@ function rebuildNativeDependencies() {
|
|||
rebuild({
|
||||
projectRootPath: desktopProjectRoot,
|
||||
buildPath: desktopProjectRoot,
|
||||
// on NixOS the prebuilt native fails with "Error: libstdc++.so.6: cannot open shared object file: No such file or directory" so we need to build from source.
|
||||
force: isNixOS(),
|
||||
electronVersion: electronVersion,
|
||||
buildFromSource: true
|
||||
electronVersion
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@ execSync("electron ./src/main.ts", {
|
|||
NODE_ENV: "development",
|
||||
TRILIUM_ENV: "dev",
|
||||
TRILIUM_DATA_DIR: "data",
|
||||
TRILIUM_RESOURCE_DIR: "../server/src"
|
||||
TRILIUM_RESOURCE_DIR: "../server/src",
|
||||
BETTERSQLITE3_NATIVE_PATH: join(projectRoot, "node_modules/better-sqlite3/build/Release/better_sqlite3.node")
|
||||
}
|
||||
});
|
||||
|
|
|
@ -15,6 +15,10 @@ import becca_loader from "../becca/becca_loader.js";
|
|||
import entity_changes from "./entity_changes.js";
|
||||
import config from "./config.js";
|
||||
|
||||
const dbOpts: Database.Options = {
|
||||
nativeBinding: process.env.BETTERSQLITE3_NATIVE_PATH || undefined
|
||||
};
|
||||
|
||||
let dbConnection: DatabaseType = buildDatabase();
|
||||
let statementCache: Record<string, Statement> = {};
|
||||
|
||||
|
@ -23,15 +27,18 @@ function buildDatabase() {
|
|||
if (process.env.TRILIUM_INTEGRATION_TEST === "memory") {
|
||||
return buildIntegrationTestDatabase();
|
||||
} else if (process.env.TRILIUM_INTEGRATION_TEST === "memory-no-store") {
|
||||
return new Database(":memory:");
|
||||
return new Database(":memory:", dbOpts);
|
||||
}
|
||||
|
||||
return new Database(dataDir.DOCUMENT_PATH, { readonly: config.General.readOnly });
|
||||
return new Database(dataDir.DOCUMENT_PATH, {
|
||||
...dbOpts,
|
||||
readonly: config.General.readOnly
|
||||
});
|
||||
}
|
||||
|
||||
function buildIntegrationTestDatabase(dbPath?: string) {
|
||||
const dbBuffer = fs.readFileSync(dbPath ?? dataDir.DOCUMENT_PATH);
|
||||
return new Database(dbBuffer);
|
||||
return new Database(dbBuffer, dbOpts);
|
||||
}
|
||||
|
||||
function rebuildIntegrationTestDatabase(dbPath?: string) {
|
||||
|
|
|
@ -7,7 +7,10 @@ import sql_init from "../services/sql_init.js";
|
|||
let dbConnection!: Database.Database;
|
||||
|
||||
sql_init.dbReady.then(() => {
|
||||
dbConnection = new Database(dataDir.DOCUMENT_PATH, { readonly: true });
|
||||
dbConnection = new Database(dataDir.DOCUMENT_PATH, {
|
||||
readonly: true,
|
||||
nativeBinding: process.env.BETTERSQLITE3_NATIVE_PATH || undefined
|
||||
});
|
||||
|
||||
[`exit`, `SIGINT`, `SIGUSR1`, `SIGUSR2`, `SIGTERM`].forEach((eventType) => {
|
||||
process.on(eventType, () => {
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
"server:coverage": "nx test server --coverage",
|
||||
"server:start": "pnpm run --filter server dev",
|
||||
"server:start-prod": "nx run server:start-prod",
|
||||
"desktop:start": "pnpm run --filter desktop dev",
|
||||
"electron:build": "nx build desktop",
|
||||
"chore:ci-update-nightly-version": "tsx ./scripts/update-nightly-version.ts",
|
||||
"chore:generate-openapi": "tsx ./scripts/generate-openapi.ts",
|
||||
|
|
Loading…
Add table
Reference in a new issue