import { defineConfig, type PluginOption } from 'vite'; import react from '@vitejs/plugin-react-swc'; import viteTsconfigPaths from 'vite-tsconfig-paths'; import svgrPlugin from 'vite-plugin-svgr'; import { ViteMinifyPlugin } from 'vite-plugin-minify'; import { visualizer } from 'rollup-plugin-visualizer'; import ProgmemGenerator from './progmem-generator'; export default defineConfig(({ command, mode }) => { if (mode === 'hosted') { return { // hosted, ignore all errors, output to dist plugins: [react(), viteTsconfigPaths(), svgrPlugin(), visualizer({ gzipSize: true }) as PluginOption] }; } else { // normal build return { plugins: [ react(), viteTsconfigPaths(), svgrPlugin(), ViteMinifyPlugin({ removeAttributeQuotes: true, minifyCSS: true, minifyJS: true, decodeEntities: true, removeComments: true, removeEmptyAttributes: true, removeOptionalTags: true, removeEmptyElements: true, removeScriptTypeAttributes: true, removeTagWhitespace: true, minifyURLs: true }), ProgmemGenerator({ outputPath: '../lib/framework/WWWData.h', bytesPerLine: 20 }) ], build: { outDir: 'build', chunkSizeWarningLimit: 1024, sourcemap: false, manifest: false, minify: mode === 'development' ? false : 'terser' }, server: { open: true, port: 3000, proxy: { '/rest': 'http://localhost:3080', '/api': { target: 'http://localhost:3080', changeOrigin: true, secure: false }, '/es': { target: 'http://localhost:3080', changeOrigin: true, secure: false } } } }; } });