Files
open-gsio/packages/client/vite.config.ts
geoffsee 0ff8b5c03e * Introduced BevyScene React component in landing-component for rendering a 3D cockpit visualization.
* Included WebAssembly asset `yachtpit.js` for cockpit functionality.
* Added Bevy MIT license file.
* Implemented a service worker to cache assets locally instead of fetching them remotely.
* Added collapsible functionality to **Tweakbox** and included the `@chakra-ui/icons` dependency.
* Applied the `hidden` prop to the Tweakbox Heading for better accessibility.
* Refactored **Particles** component for improved performance, clarity, and maintainability.

  * Introduced helper functions for particle creation and count management.
  * Added responsive resizing with particle repositioning.
  * Optimized animation updates, including velocity adjustments for speed changes.
  * Ensured canvas size and particle state are cleanly managed on component unmount.
2025-07-17 13:47:50 -04:00

108 lines
3.3 KiB
TypeScript

import * as child_process from 'node:child_process';
import react from '@vitejs/plugin-react';
import { plugin as vike } from 'vike/plugin';
import { defineConfig } from 'vite';
import { VitePWA } from 'vite-plugin-pwa';
// eslint-disable-next-line import/no-unresolved
import { configDefaults } from 'vitest/config';
const prebuildPlugin = () => ({
name: 'prebuild',
config(config, { command }) {
if (command === 'build') {
child_process.execSync('bun generate:sitemap');
console.log('Generated Sitemap -> public/sitemap.xml');
child_process.execSync('bun run generate:robotstxt');
console.log('Generated robots.txt -> public/robots.txt');
child_process.execSync('bun run generate:fonts');
console.log('Copied fonts -> public/static/fonts');
child_process.execSync('bun run generate:bevy:bundle', {
stdio: 'inherit',
});
console.log('Bundled bevy app -> public/yachtpit.html');
}
},
});
export default defineConfig(({ command }) => {
return {
mode: 'production',
plugins: [
prebuildPlugin(),
react(),
vike({
prerender: true,
disableAutoFullBuild: false,
}),
VitePWA({
registerType: 'autoUpdate',
injectRegister: null,
minify: true,
disable: false,
filename: 'service-worker.js',
devOptions: {
enabled: false,
},
manifest: {
name: 'open-gsio',
short_name: 'open-gsio',
description: 'Assistant',
},
workbox: {
globPatterns: ['**/*.{js,css,html,ico,png,svg,wasm}'],
navigateFallbackDenylist: [/^\/api\//],
maximumFileSizeToCacheInBytes: 25000000,
},
}),
// PWA plugin saves money on data transfer by caching assets on the client
/*
For safari, use this script in the console to unregister the service worker.
await navigator.serviceWorker.getRegistrations()
.then(registrations => {
registrations.map(r => {
r.unregister()
})
})
*/
],
server: {
port: 3000,
proxy: {
// proxies requests in development
'/api': {
target: 'http://localhost:3003',
},
'/fonts': {
target: 'http://localhost:3003/fonts',
},
},
},
esbuild: {
// drop: ["console"]
},
build: {
emitAssets: true,
sourcemap: false,
minify: 'esbuild',
target: ['es2020', 'edge88', 'firefox78', 'chrome87', 'safari13'],
cssMinify: true,
},
test: {
globals: true,
environment: 'jsdom',
registerNodeLoader: false,
setupFiles: ['./src/test/setup.ts'],
exclude: [...configDefaults.exclude, 'dist/**'],
reporters: process.env.GITHUB_ACTIONS ? ['dot', 'github-actions', 'html'] : ['dot', 'html'],
coverage: {
// you can include other reporters, but 'json-summary' is required, json is recommended
reporter: ['json-summary', 'json', 'html'],
reportsDirectory: 'coverage',
// If you want a coverage reports even if your tests are failing, include the reportOnFailure option
reportOnFailure: true,
},
},
};
});