home/vite.config.js

138 lines
3.4 KiB
JavaScript
Raw Normal View History

2022-11-15 22:19:29 +08:00
import {
defineConfig,
loadEnv
} from 'vite';
import vue from '@vitejs/plugin-vue';
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import {
ElementPlusResolver
} from 'unplugin-vue-components/resolvers'
import {
createHtmlPlugin
} from 'vite-plugin-html';
import {
resolve
} from 'path';
2023-01-15 17:47:35 +08:00
import {
VitePWA
} from 'vite-plugin-pwa';
2022-11-15 22:19:29 +08:00
// https://vitejs.dev/config/
export default ({
mode
}) => defineConfig({
plugins: [
vue(),
AutoImport({
resolvers: [ElementPlusResolver()],
}),
Components({
resolvers: [ElementPlusResolver()],
}),
createHtmlPlugin({
minify: true,
template: 'index.html',
inject: {
data: {
title: loadEnv(mode, process.cwd()).VITE_SITE_NAME,
2023-02-16 10:57:30 +08:00
author: loadEnv(mode, process.cwd()).VITE_SITE_ANTHOR,
keywords: loadEnv(mode, process.cwd()).VITE_SITE_KEYWORDS,
description: loadEnv(mode, process.cwd()).VITE_SITE_DES,
tongji: loadEnv(mode, process.cwd()).VITE_SITE_BAIDUTONGJI,
2022-11-15 22:19:29 +08:00
},
},
}),
2023-01-15 17:47:35 +08:00
VitePWA({
registerType: 'autoUpdate',
devOptions: {
enabled: true,
navigateFallbackAllowlist: [/^index.html$/]
2023-01-15 17:47:35 +08:00
},
workbox: {
2023-02-16 10:57:30 +08:00
skipWaiting: true,
clientsClaim: true,
2023-01-15 17:47:35 +08:00
runtimeCaching: [{
urlPattern: /(.*?)\.(js|css|woff2|woff|ttf)/, // js / css 静态资源缓存
handler: 'CacheFirst',
options: {
cacheName: 'js-css-cache',
},
},
{
urlPattern: /(.*?)\.(png|jpe?g|svg|gif|bmp|psd|tiff|tga|eps)/, // 图片缓存
handler: 'CacheFirst',
options: {
cacheName: 'image-cache',
},
},
],
},
manifest: {
2023-02-16 10:57:30 +08:00
"name": loadEnv(mode, process.cwd()).VITE_SITE_NAME,
"short_name": loadEnv(mode, process.cwd()).VITE_SITE_NAME,
"description": loadEnv(mode, process.cwd()).VITE_SITE_DES,
2023-01-15 17:47:35 +08:00
"display": "standalone",
"start_url": "/",
"theme_color": "#424242",
"background_color": "#424242",
"icons": [{
"src": "/images/icon/48.png",
"sizes": "48x48",
"type": "image/png"
}, {
"src": "/images/icon/72.png",
"sizes": "72x72",
"type": "image/png"
}, {
"src": "/images/icon/96.png",
"sizes": "96x96",
"type": "image/png"
}, {
"src": "/images/icon/128.png",
"sizes": "128x128",
"type": "image/png"
}, {
"src": "/images/icon/144.png",
"sizes": "144x144",
"type": "image/png"
}, {
"src": "/images/icon/192.png",
"sizes": "192x192",
"type": "image/png"
}, {
"src": "/images/icon/512.png",
"sizes": "512x512",
"type": "image/png"
}]
}
}),
2022-11-15 22:19:29 +08:00
],
2022-11-16 10:04:33 +08:00
server: {
port: "3000",
2022-11-17 14:13:03 +08:00
hmr: true,
2022-11-16 10:04:33 +08:00
},
2022-11-15 22:19:29 +08:00
resolve: {
alias: [{
find: '@',
replacement: resolve(__dirname, "src"),
}, ]
},
css: {
preprocessorOptions: {
scss: {
charset: false,
additionalData: `@import "./src/style/global.scss";`
}
}
2023-01-14 19:34:39 +08:00
},
build: {
minify: 'terser',
terserOptions: {
compress: {
// 生产环境时移除 console
pure_funcs: ['console.log'],
},
},
},
2022-11-15 22:19:29 +08:00
})