vite基本配置

280 阅读1分钟

vite基本配置

import {
  defineConfig,
  loadEnv
} from 'vite'
import vue from '@vitejs/plugin-vue'
import { resolve } from 'path'
import viteCompression from 'vite-plugin-compression' //压缩静态资源的插件
const alias = {
  '@': resolve(__dirname, 'src')
}

export default defineConfig(({
  mode
}) => {
  const env = loadEnv(mode, process.cwd())
  const {
    VITE_APP_ENV
  } = env //获取当前环境
  return {
    plugins: [vue(), viteCompression({
      verbose: true,
      disable: false,
      threshold: 10240,
      algorithm: 'gzip',
      ext: '.gz',
    })],
    resolve: {
      alias
    },
    base: VITE_APP_ENV === 'production' ? '/' : '/', //再生产环境配置base路径
    build: {
      minify: "terser",
      chunkSizeWarningLimit: 1500, //设置包的大小limit上限
      outDir: 'tywz', //打包之后的文件名称
      target: 'es2020', //目标打包最高兼容
      rollupOptions: {
        output: { //打包后的静态文件目录
          chunkFileNames: 'static/js/[name]-[hash].js', //打包之后的懒加载的js文件名称
          entryFileNames: 'static/js/[name]-[hash].js', //打包之后的js文件名称
          assetFileNames: 'static/[ext]/[name]-[hash].[ext]' //打包之后静态资源名称
          //,
        },
        // assetsDir:'assets',
        manualChunks(id) { //静态资源分拆打包
          if (id.includes('node_modules')) {
            return id.toString().split('node_modules/')[1].split('/')[0].toString();
          }
        }
      },
      terserOptions: { //清除打包中的console和debugger
        compress: {
          drop_console: true,
          drop_debugger: true,
        },
      },
    },
    publicDir: 'assets',
    optimizedeps: {
      esbuildoptions: {
        target: 'es2020'
      }
    }
  }
})