SPB Git

Repository Public

vite.config.ts 1.4 KB 23 lines typescript

1import tailwindcss from '@tailwindcss/vite';2import react from '@vitejs/plugin-react';3import { build as esbuild } from 'esbuild';4import { defineConfig, type Plugin } from 'vite';56// The service worker (src/sw.ts) is bundled on its own into one classic script at the site root, /sw.js: no hash in7// its name (the browser re-checks that URL), scope "/".8const sw = async (minify: boolean, version: string): Promise<string> =>9  (await esbuild({ entryPoints: ['src/sw.ts'], bundle: true, write: false, format: 'iife', target: 'es2020', minify, legalComments: 'none', define: { __SW_VERSION__: JSON.stringify(version) } })).outputFiles[0]!.text;10const serviceWorker = (): Plugin => ({11  name: 'spd-service-worker',12  async generateBundle() { this.emitFile({ type: 'asset', fileName: 'sw.js', source: await sw(true, String(Date.now())) }); },13  configureServer(server) {14    server.middlewares.use('/sw.js', (_req, res) => { void sw(false, 'dev').then((code) => { res.setHeader('content-type', 'text/javascript'); res.setHeader('cache-control', 'no-cache'); res.end(code); }, (e: Error) => { res.statusCode = 500; res.end(e.message); }); });15  },16});1718export default defineConfig({19  plugins: [react(), tailwindcss(), serviceWorker()],20  build: { outDir: '../../dist/web', emptyOutDir: true, sourcemap: false, assetsInlineLimit: 0, modulePreload: { polyfill: false }, target: 'es2022' },21  server: { port: 5183, proxy: { '/api': 'http://127.0.0.1:8661' } },22});23
Files main
Menu

Theme