81 lines
2.4 KiB
TypeScript
81 lines
2.4 KiB
TypeScript
import { defineConfig } from 'vitest/config';
|
|
import { devtools } from '@tanstack/devtools-vite';
|
|
import { tanstackStart } from '@tanstack/react-start/plugin/vite';
|
|
import viteReact from '@vitejs/plugin-react';
|
|
import viteTsConfigPaths from 'vite-tsconfig-paths';
|
|
import { fileURLToPath, URL } from 'node:url';
|
|
import tailwindcss from '@tailwindcss/vite';
|
|
import { nitro } from 'nitro/vite';
|
|
import { copyFileSync, mkdirSync, existsSync } from 'node:fs';
|
|
import { resolve } from 'node:path';
|
|
import { vitePluginSkills } from '../../packages/pen-ai-skills/vite-plugin-skills';
|
|
|
|
const isElectronBuild = process.env.BUILD_TARGET === 'electron';
|
|
|
|
// Copy CanvasKit WASM files to public directory for runtime loading
|
|
function copyCanvasKitWasm() {
|
|
const wasmDir = resolve('public/canvaskit');
|
|
if (!existsSync(wasmDir)) mkdirSync(wasmDir, { recursive: true });
|
|
const ckDir = resolve('../../node_modules/canvaskit-wasm/bin');
|
|
const files = ['canvaskit.wasm'];
|
|
for (const file of files) {
|
|
const src = resolve(ckDir, file);
|
|
const dest = resolve(wasmDir, file);
|
|
if (existsSync(src) && !existsSync(dest)) {
|
|
copyFileSync(src, dest);
|
|
}
|
|
}
|
|
}
|
|
copyCanvasKitWasm();
|
|
|
|
const config = defineConfig({
|
|
test: {
|
|
teardownTimeout: 1000,
|
|
include: [
|
|
'src/**/*.test.{ts,tsx}',
|
|
'server/**/*.test.ts',
|
|
'../../packages/*/src/**/*.test.{ts,tsx}',
|
|
'../desktop/git/__tests__/**/*.test.ts',
|
|
'../../scripts/**/__tests__/**/*.test.ts',
|
|
],
|
|
setupFiles: ['./src/__tests__/setup-react.ts'],
|
|
},
|
|
resolve: {
|
|
alias: {
|
|
'@': fileURLToPath(new URL('./src', import.meta.url)),
|
|
},
|
|
},
|
|
ssr: {
|
|
external: ['@zseven-w/agent-native'],
|
|
},
|
|
assetsInclude: ['**/*.wasm'],
|
|
plugins: [
|
|
vitePluginSkills(fileURLToPath(new URL('../../packages/pen-ai-skills', import.meta.url))),
|
|
...(process.env.NODE_ENV === 'production' ? [] : [devtools()]),
|
|
nitro({
|
|
rollupConfig: {
|
|
external: [
|
|
/^@sentry\//,
|
|
'canvas',
|
|
'jsdom',
|
|
'cssstyle',
|
|
'canvaskit-wasm',
|
|
'@zseven-w/agent-native',
|
|
],
|
|
},
|
|
serverDir: './server',
|
|
output: { dir: '../../out/web' },
|
|
...(isElectronBuild ? { preset: 'node-server' } : {}),
|
|
}),
|
|
// this is the plugin that enables path aliases
|
|
viteTsConfigPaths({
|
|
projects: ['./tsconfig.json'],
|
|
}),
|
|
tailwindcss(),
|
|
tanstackStart(),
|
|
viteReact(),
|
|
],
|
|
});
|
|
|
|
export default config;
|