mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-04 05:28:59 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			111 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			3.0 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"),
 | 
						|
                print: join(__dirname, "src", "print.tsx")
 | 
						|
            },
 | 
						|
            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"),
 | 
						|
    }
 | 
						|
}));
 |