coai/app/vite.config.ts

115 lines
2.8 KiB
TypeScript

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react-swc'
import path from "path"
import { createHtmlPlugin } from 'vite-plugin-html'
import {VitePWA} from "vite-plugin-pwa";
// https://vitejs.dev/config/
export default defineConfig({
plugins: [
react(),
createHtmlPlugin({
minify: true,
}),
VitePWA({
registerType: 'autoUpdate',
manifest: {
id: "chatnio",
name: "Chat Nio",
short_name: "Chat Nio",
description: "👋 Chat Nio, lightweight Web ChatGPT chat site",
theme_color: "#0a0a0a",
icons: [{
src: "/logo.png",
sizes: "64x64",
type: "image/png",
}],
start_url: "/",
},
devOptions: {
enabled: true,
},
workbox: {
globPatterns: [
'**/*.{js,css,html,png,svg,ico,webp}',
],
globDirectory: 'dist',
swDest: 'dist/sw.js',
skipWaiting: true,
clientsClaim: true,
runtimeCaching: [{
urlPattern: new RegExp('^https://fonts.googlefonts.cn/(.*)'),
handler: 'CacheFirst',
options: {
cacheName: 'google-fonts',
expiration: {
maxEntries: 3600,
}
}
},
{
urlPattern: new RegExp('^https://fonts.gstatic.googlefonts.cn/(.*)'),
handler: 'CacheFirst',
options: {
cacheName: 'google-fonts-gstatic',
expiration: {
maxEntries: 3600,
}
}
},
{
urlPattern: new RegExp('https://cdn.zmh-program.site/(.*)'),
handler: 'CacheFirst',
options: {
cacheName: 'cdn',
expiration: {
maxEntries: 3600,
}
}
},
{
urlPattern: new RegExp('https://cdn.jsdelivr.net/(.*)'),
handler: 'CacheFirst',
options: {
cacheName: 'cdn-jsdelivr',
expiration: {
maxEntries: 3600,
}
}
},
{
urlPattern: /\.(?:png|gif|jpg|jpeg|svg|webp)$/,
handler: 'CacheFirst',
options: {
cacheName: 'images',
expiration: {
maxEntries: 7200,
}
}
}],
}
}),
],
resolve: {
alias: {
"@": path.resolve(__dirname, "./src"),
},
},
css: {
preprocessorOptions: {
less: {
javascriptEnabled: true,
}
}
},
build: {
manifest: true,
rollupOptions: {
output: {
entryFileNames: `assets/[name].[hash].js`,
chunkFileNames: `assets/[name].[hash].js`,
},
},
}
});