aboutsummaryrefslogtreecommitdiff
path: root/vite.config.js
diff options
context:
space:
mode:
Diffstat (limited to 'vite.config.js')
-rw-r--r--vite.config.js53
1 files changed, 53 insertions, 0 deletions
diff --git a/vite.config.js b/vite.config.js
new file mode 100644
index 00000000..47edf477
--- /dev/null
+++ b/vite.config.js
@@ -0,0 +1,53 @@
+import { defineConfig } from 'vite';
+import react from '@vitejs/plugin-react';
+import svgr from 'vite-plugin-svgr';
+import { VitePWA } from 'vite-plugin-pwa';
+
+/* eslint-disable no-template-curly-in-string */
+export default defineConfig(() => ({
+ server: {
+ port: 3000,
+ proxy: {
+ '/api/socket': 'ws://localhost:8082',
+ '/api': 'http://localhost:8082',
+ },
+ },
+ build: {
+ outDir: 'build',
+ },
+ plugins: [
+ svgr(),
+ react(),
+ VitePWA({
+ includeAssets: ['favicon.ico', 'apple-touch-icon-180x180.png'],
+ workbox: {
+ navigateFallbackDenylist: [/^\/api/],
+ maximumFileSizeToCacheInBytes: 4000000,
+ globPatterns: ['**/*.{js,css,html,woff,woff2,mp3}'],
+ },
+ manifest: {
+ short_name: '${title}',
+ name: '${description}',
+ theme_color: '${colorPrimary}',
+ icons: [
+ {
+ src: 'pwa-64x64.png',
+ sizes: '64x64',
+ type: 'image/png',
+ },
+ {
+ src: 'pwa-192x192.png',
+ sizes: '192x192',
+ type: 'image/png',
+ },
+ {
+ src: 'pwa-512x512.png',
+ sizes: '512x512',
+ type: 'image/png',
+ purpose: 'any maskable',
+ },
+ ],
+ },
+ }),
+ ],
+}));