mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 03:29:02 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			110 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| /// <reference types='vitest' />
 | |
| import { join, resolve } from 'path';
 | |
| import { defineConfig, type Plugin } from 'vite';
 | |
| import { viteStaticCopy } from 'vite-plugin-static-copy'
 | |
| import webpackStatsPlugin from 'rollup-plugin-webpack-stats';
 | |
| import preact from "@preact/preset-vite";
 | |
| 
 | |
| const assets = [ "assets", "stylesheets", "fonts", "translations" ];
 | |
| 
 | |
| const isDev = process.env.NODE_ENV === "development";
 | |
| let plugins: any = [
 | |
|     preact({
 | |
|         babel: {
 | |
|             compact: !isDev
 | |
|         }
 | |
|     })
 | |
| ];
 | |
| 
 | |
| if (!isDev) {
 | |
|     plugins = [
 | |
|         ...plugins,
 | |
|         viteStaticCopy({
 | |
|             targets: assets.map((asset) => ({
 | |
|                 src: `src/${asset}/*`,
 | |
|                 dest: asset
 | |
|             }))
 | |
|         }),
 | |
|         viteStaticCopy({
 | |
|             structured: true,
 | |
|             targets: [
 | |
|                 {
 | |
|                     src: "../../node_modules/@excalidraw/excalidraw/dist/prod/fonts/*",
 | |
|                     dest: "",
 | |
|                 }
 | |
|             ]
 | |
|         }),
 | |
|         webpackStatsPlugin()
 | |
|     ]
 | |
| }
 | |
| 
 | |
| export default defineConfig(() => ({
 | |
|     root: __dirname,
 | |
|     cacheDir: '../../node_modules/.vite/apps/client',
 | |
|     base: "",
 | |
|     plugins,
 | |
|     resolve: {
 | |
|         alias: [
 | |
|             {
 | |
|                 find: "react",
 | |
|                 replacement: "preact/compat"
 | |
|             },
 | |
|             {
 | |
|                 find: "react-dom",
 | |
|                 replacement: "preact/compat"
 | |
|             }
 | |
|         ],
 | |
|         dedupe: [
 | |
|             "react",
 | |
|             "react-dom",
 | |
|             "preact",
 | |
|             "preact/compat",
 | |
|             "preact/hooks"
 | |
|         ]
 | |
|     },
 | |
|     build: {
 | |
|         target: "esnext",
 | |
|         outDir: './dist',
 | |
|         emptyOutDir: true,
 | |
|         reportCompressedSize: true,
 | |
|         sourcemap: false,
 | |
|         rollupOptions: {
 | |
|             input: {
 | |
|                 desktop: join(__dirname, "src", "desktop.ts"),
 | |
|                 mobile: join(__dirname, "src", "mobile.ts"),
 | |
|                 login: join(__dirname, "src", "login.ts"),
 | |
|                 setup: join(__dirname, "src", "setup.ts"),
 | |
|                 share: join(__dirname, "src", "share.ts"),
 | |
|                 set_password: join(__dirname, "src", "set_password.ts"),
 | |
|                 runtime: join(__dirname, "src", "runtime.ts")
 | |
|             },
 | |
|             output: {
 | |
|                 entryFileNames: "src/[name].js",
 | |
|                 chunkFileNames: "src/[name].js",
 | |
|                 assetFileNames: "src/[name].[ext]",
 | |
|                 manualChunks: {
 | |
|                     "ckeditor5": [ "@triliumnext/ckeditor5" ]
 | |
|                 },
 | |
|             },
 | |
|             onwarn(warning, rollupWarn) {
 | |
|                 if (warning.code === "MODULE_LEVEL_DIRECTIVE") {
 | |
|                     return;
 | |
|                 }
 | |
|                 rollupWarn(warning);
 | |
|             }
 | |
|         }
 | |
|     },
 | |
|     test: {
 | |
|         environment: "happy-dom",
 | |
|         setupFiles: [
 | |
|             "./src/test/setup.ts"
 | |
|         ]
 | |
|     },
 | |
|     commonjsOptions: {
 | |
|         transformMixedEsModules: true,
 | |
|     },
 | |
|     define: {
 | |
|         "process.env.IS_PREACT": JSON.stringify("true"),
 | |
|     }
 | |
| }));
 | 
