Files
Auto_Bangumi/webui/vite.config.ts

108 lines
2.5 KiB
TypeScript

import { resolve } from 'node:path';
import UnoCSS from 'unocss/vite';
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import AutoImport from 'unplugin-auto-import/vite';
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({
base: './',
plugins: [
VueRouter({
dts: 'types/dts/router-type.d.ts',
}),
vue({
script: {
defineModel: true,
},
}),
UnoCSS(),
AutoImport({
imports: [
'vue',
'vitest',
'pinia',
'@vueuse/core',
VueRouterAutoImports,
'vue-i18n',
],
dts: 'types/dts/auto-imports.d.ts',
dirs: ['src/api', 'src/store', 'src/hooks', 'src/utils'],
}),
Components({
dts: 'types/dts/components.d.ts',
dirs: [
'src/components',
'src/components/basic',
'src/components/layout',
'src/components/setting',
],
}),
VueI18nPlugin({
include: resolve(__dirname, './src/i18n/**'),
}),
VitePWA({
injectRegister: 'auto',
registerType: 'autoUpdate',
devOptions: {
enabled: true,
},
workbox: {
globPatterns: ['**/*.{js,css,html,ico,png,svg}'],
},
manifest: {
name: 'AutoBangumi',
display: 'standalone',
short_name: 'AutoBangumi',
description: 'Automated Bangumi Download Tool',
theme_color: '#ffffff',
icons: [
{
src: '/images/logo.svg',
sizes: 'any',
type: 'image/svg+xml',
purpose: 'any',
},
{
src: '/images/pwa-192.png',
sizes: '192x192',
type: 'image/png',
},
{
src: '/images/pwa-512.png',
sizes: '512x512',
type: 'image/png',
purpose: 'any',
},
],
},
}),
],
css: {
preprocessorOptions: {
scss: {
additionalData: '@import "./src/style/mixin.scss";',
},
},
},
build: {
cssCodeSplit: false,
},
resolve: {
alias: {
'@': resolve(__dirname, 'src'),
'#': resolve(__dirname, 'types'),
},
},
server: {
proxy: {
'^/api/.*': 'http://127.0.0.1:7892',
},
},
});