mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 02:16:05 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			85 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import * as esbuild from "esbuild";
 | |
| import { join } from "path";
 | |
| import * as fs from "fs-extra";
 | |
| import * as child_process from "child_process";
 | |
| 
 | |
| const projectDir = __dirname + "/..";
 | |
| const outDir = join(projectDir, "dist");
 | |
| 
 | |
| async function build() {
 | |
|     esbuild.build({
 | |
|         entryPoints: [
 | |
|             join(projectDir, "src/main.ts"),
 | |
|             join(projectDir, "src/docker_healthcheck.ts")
 | |
|         ],
 | |
|         tsconfig: join(projectDir, "tsconfig.app.json"),
 | |
|         platform: "node",
 | |
|         bundle: true,
 | |
|         outdir: outDir,
 | |
|         outExtension: {
 | |
|             ".js": ".cjs"
 | |
|         },
 | |
|         format: "cjs",
 | |
|         external: [
 | |
|             "electron",
 | |
|             "@electron/remote",
 | |
|             "better-sqlite3",
 | |
|             "./xhr-sync-worker.js",
 | |
|             "@preact/preset-vite",
 | |
|             "vite"
 | |
|         ],
 | |
|         splitting: false,
 | |
|         loader: {
 | |
|             ".css": "text",
 | |
|             ".ejs": "text"
 | |
|         }
 | |
|     });
 | |
| }
 | |
| 
 | |
| function copyAssets() {
 | |
|     // Copy server assets
 | |
|     copy("src/assets", "assets/");
 | |
| 
 | |
|     // Copy node modules
 | |
|     for (const module of [ "better-sqlite3", "bindings", "file-uri-to-path" ]) {
 | |
|         copy(`node_modules/${module}`, `node_modules/${module}/`);
 | |
|     }
 | |
| 
 | |
|     // Copy sync worker.
 | |
|     copy("node_modules/jsdom/lib/jsdom/living/xhr/xhr-sync-worker.js", "xhr-sync-worker.js");
 | |
| 
 | |
|     // Copy share templates.
 | |
|     copy("../../packages/share-theme/src/templates", "share-theme/templates/");
 | |
| }
 | |
| 
 | |
| function buildAndCopyClient() {
 | |
|     // Trigger the build.
 | |
|     child_process.execSync("pnpm build", { cwd: join(projectDir, "../client"), stdio: "inherit" });
 | |
| 
 | |
|     // Copy the artifacts.
 | |
|     copy("../client/dist", "public/");
 | |
| 
 | |
|     // Remove unnecessary files.
 | |
|     deleteFromOutput("public/webpack-stats.json");
 | |
| }
 | |
| 
 | |
| function copy(projectDirPath: string, outDirPath: string) {
 | |
|     if (outDirPath.endsWith("/")) {
 | |
|         fs.mkdirpSync(join(outDirPath));
 | |
|     }
 | |
|     fs.copySync(join(projectDir, projectDirPath), join(outDir, outDirPath), { dereference: true });
 | |
| }
 | |
| 
 | |
| function deleteFromOutput(path: string) {
 | |
|     fs.rmSync(join(outDir, path), { recursive: true });
 | |
| }
 | |
| 
 | |
| async function main() {
 | |
|     fs.emptyDirSync(outDir);
 | |
|     await build();
 | |
|     copyAssets();
 | |
|     buildAndCopyClient();
 | |
| }
 | |
| 
 | |
| main();
 |