75 lines
1.9 KiB
JavaScript
75 lines
1.9 KiB
JavaScript
import { defineConfig } from "vite";
|
|
import { VitePWA } from "vite-plugin-pwa";
|
|
import viteCompression from "vite-plugin-compression";
|
|
|
|
const vitePWAconfiguration = {
|
|
devOptions: {
|
|
enabled: false,
|
|
suppressWarnings: true,
|
|
},
|
|
workbox: {
|
|
sourcemap: false,
|
|
cleanupOutdatedCaches: false,
|
|
maximumFileSizeToCacheInBytes: 10000000,
|
|
globPatterns: [
|
|
"**/*.{js,js.gz,css,html,gif,png,json,woff,woff2,json,ogg,wav,mp3,ico,png,svg}",
|
|
"favicon/*.{js,js.gz,css,html,gif,png,json,woff,woff2,json,ogg,wav,mp3,ico,png,svg}",
|
|
],
|
|
runtimeCaching: [
|
|
{
|
|
urlPattern: ({ url }) =>
|
|
[
|
|
/^https:\/\/raw\.githubusercontent\.com\/.*/i,
|
|
/^https:\/\/shabda\.ndre\.gr\/.*/i,
|
|
].some((regex) => regex.test(url)),
|
|
handler: "CacheFirst",
|
|
options: {
|
|
cacheName: "external-samples",
|
|
expiration: {
|
|
maxEntries: 5000,
|
|
maxAgeSeconds: 60 * 60 * 24 * 30, // <== 14 days
|
|
},
|
|
cacheableResponse: {
|
|
statuses: [0, 200],
|
|
},
|
|
},
|
|
},
|
|
],
|
|
},
|
|
manifest: false,
|
|
registerType: "autoUpdate",
|
|
injectRegister: "script-defer",
|
|
};
|
|
|
|
export default defineConfig(({ command, mode, ssrBuild }) => {
|
|
if (command === "serve") {
|
|
return {
|
|
plugins: [viteCompression(), VitePWA(vitePWAconfiguration)],
|
|
assetsInclude: ["**/*.md"],
|
|
server: {
|
|
port: 8000,
|
|
strictPort: true,
|
|
},
|
|
build: {
|
|
outDir: "dist",
|
|
emptyOutDir: true,
|
|
cssCodeSplit: true,
|
|
cssMinify: true,
|
|
minify: true,
|
|
}
|
|
};
|
|
} else {
|
|
return {
|
|
plugins: [viteCompression(), VitePWA(vitePWAconfiguration)],
|
|
chunkSizeWarningLimit: 1600 * 2,
|
|
build: {
|
|
outDir: "dist",
|
|
emptyOutDir: true,
|
|
cssCodeSplit: true,
|
|
cssMinify: true,
|
|
minify: true,
|
|
},
|
|
};
|
|
}
|
|
});
|