Files
timmy-tower/the-matrix/vite.config.js

51 lines
1.2 KiB
JavaScript

import { defineConfig } from 'vite';
import { readFileSync, writeFileSync } from 'fs';
function generateSW() {
return {
name: 'generate-sw',
apply: 'build',
closeBundle() {
const staticAssets = [
'/',
'/manifest.json',
'/icons/icon-192.png',
'/icons/icon-512.png',
];
try {
const manifest = JSON.parse(readFileSync('dist/.vite/manifest.json', 'utf-8'));
for (const entry of Object.values(manifest)) {
staticAssets.push('/' + entry.file);
if (entry.css) entry.css.forEach(f => staticAssets.push('/' + f));
}
} catch {
}
const template = readFileSync('sw.js', 'utf-8');
const out = template.replace('__PRECACHE_URLS__', JSON.stringify(staticAssets, null, 4));
writeFileSync('dist/sw.js', out);
console.log('[generate-sw] wrote dist/sw.js with', staticAssets.length, 'precache URLs');
},
};
}
export default defineConfig({
root: '.',
base: '/tower/',
build: {
outDir: 'dist',
assetsDir: 'assets',
target: 'esnext',
manifest: true,
},
plugins: [generateSW()],
server: {
host: true,
proxy: {
'/api': 'http://localhost:8080',
},
},
});