WIP PWA for Grain
next.grain.social
1import { defineConfig } from 'vite';
2import { readFileSync, writeFileSync } from 'fs';
3import { resolve } from 'path';
4
5function swVersionPlugin() {
6 return {
7 name: 'sw-version',
8 writeBundle() {
9 const swPath = resolve('dist/sw.js');
10 const content = readFileSync(swPath, 'utf-8');
11 const versioned = content.replace('__BUILD_TIME__', Date.now().toString());
12 writeFileSync(swPath, versioned);
13 }
14 };
15}
16
17export default defineConfig({
18 root: '.',
19 publicDir: 'public',
20 build: {
21 outDir: 'dist',
22 target: 'esnext'
23 },
24 plugins: [swVersionPlugin()],
25 server: {
26 port: 3000
27 },
28 preview: {
29 port: 3000
30 }
31});