diff --git a/webui/tsconfig.json b/webui/tsconfig.json
index 85ecd0bc..5bcd753a 100644
--- a/webui/tsconfig.json
+++ b/webui/tsconfig.json
@@ -14,6 +14,7 @@
"skipLibCheck": true,
"noImplicitAny": false,
"baseUrl": "./",
+ "types": ["vite-plugin-pwa/client"],
"paths": {
"@/*": ["src/*"],
"#/*": ["types/*"]
diff --git a/webui/vite.config.ts b/webui/vite.config.ts
index 44f64732..683181d8 100644
--- a/webui/vite.config.ts
+++ b/webui/vite.config.ts
@@ -7,6 +7,7 @@ import Components from 'unplugin-vue-components/vite';
import VueRouter from 'unplugin-vue-router/vite';
import { VueRouterAutoImports } from 'unplugin-vue-router';
import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite';
+import { VitePWA } from 'vite-plugin-pwa';
// https://vitejs.dev/config/
export default defineConfig({
@@ -45,6 +46,36 @@ export default defineConfig({
VueI18nPlugin({
include: resolve(__dirname, './src/i18n/**'),
}),
+ VitePWA({
+ injectRegister: 'auto',
+ registerType: 'autoUpdate',
+ devOptions: {
+ enabled: true,
+ },
+ workbox: {
+ globPatterns: ['**/*.{js,css,html,ico,png,svg}'],
+ },
+ manifest: {
+ name: 'Auto_Bangumi',
+ short_name: 'Auto_Bangumi',
+ description: 'Automated Bangumi Download Tool',
+ theme_color: '#ffffff',
+ icons: [
+ {
+ src: '/images/logo.svg',
+ sizes: 'any',
+ type: 'image/svg+xml',
+ purpose: 'any',
+ },
+ {
+ src: '/images/pwa-512.png',
+ sizes: '512x512',
+ type: 'image/png',
+ purpose: 'any',
+ },
+ ],
+ },
+ }),
],
css: {
preprocessorOptions: {