123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- // Plugins
- import Components from 'unplugin-vue-components/vite'
- import Vue from '@vitejs/plugin-vue'
- import Vuetify, { transformAssetUrls } from 'vite-plugin-vuetify'
- // import ViteFonts from 'unplugin-fonts/vite'
- import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
- import AutoImport from 'unplugin-auto-import/vite'
- import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
- import { terser } from 'rollup-plugin-terser'
- import path from 'path'
- import compression from 'vite-plugin-compression'
- // Utilities
- import { defineConfig } from 'vite'
- import { fileURLToPath, URL } from 'node:url'
- // https://vitejs.dev/config/
- export default defineConfig({
- plugins: [
- Vue({
- template: { transformAssetUrls }
- }),
- // https://github.com/vuetifyjs/vuetify-loader/tree/master/packages/vite-plugin#readme
- Vuetify(),
- Components({
- dts: true,
- resolvers: [
- (name) => {
- if (name.startsWith('Base')) {
- return { importName: name.slice(4), path: `@/components/CtVuetify/${name}.vue` }
- }
- },
- ElementPlusResolver(),
- ]
- }),
- compression({
- verbose: true,
- disable: false,
- threshold: 10240, // 只会压缩大于 10kb 的文件
- algorithm: 'gzip', // 可以选择 gzip 或 brotli
- ext: '.gz', // 输出后缀
- }),
- AutoImport({
- resolvers: [ElementPlusResolver()],
- }),
- createSvgIconsPlugin({
- iconDirs: [path.resolve(process.cwd(), 'src/assets/svg')],
- // symbolId: 'icon-[dir]-[name]',
- })
- // ViteFonts({
- // google: {
- // // families: [{
- // // name: 'Roboto',
- // // styles: 'wght@100;300;400;500;700;900',
- // // }],
- // },
- // }),
- ],
- define: { 'process.env': {} },
- resolve: {
- alias: {
- '@': fileURLToPath(new URL('./src', import.meta.url))
- },
- extensions: [
- '.js',
- '.json',
- '.jsx',
- '.mjs',
- '.ts',
- '.tsx',
- '.vue',
- ],
- },
- build: {
- sourcemap: false, // 生产环境禁用源映射
- rollupOptions: {
- plugins: [terser({ ecma: 2020 })], // 启用 terser 进行代码压缩
- output: {
- // 设置静态资源引用的基础路径
- assetFileNames: 'assets/[name].[hash].[ext]',
- chunkFileNames: 'chunks/[name].[hash].js',
- entryFileNames: '[name].[hash].js',
- },
- watch: true // 允许浏览器在源码变化时自动刷新
- },
- },
- // 配置静态资源处理
- publicDir: 'public', // 设置静态资源目录
- assetsDir: 'assets', // 设置构建后的静态资源目录
- base: '/', // 设置应用的基本URL
- server: {
- port: 3000
- }
- // configureWebpack: {
- // output: {
- // filename: 'js/[name].' + new Date().getTime() + '.js',
- // chunkFilename: 'js/[name].' + new Date().getTime() + '.js'
- // }
- // }
- })
|