import { resolve } from 'path' import { defineConfig, loadEnv } from 'vite' import apiConfig from './laughing-api.config' import plugins from './plugins' // https://vitejs.dev/config/ export default defineConfig(({ command, mode }) => { process.env = { ...process.env, ...loadEnv(mode, process.cwd()) } const isBuild = command === 'build' let build = {} if (isBuild) { build = { manifest: true, } } return { plugins: [ ...plugins({ command, mode }), ], resolve: { alias: { '@': resolve(__dirname, 'src'), 'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js', }, extensions: ['.js', '.ts', '.jsx', '.tsx', '.json', '.vue', '.mjs'], }, // vite 中使用 less/scss/sass/stylus 等 css 预处理器, 直接进行安装,不用像 webpack 那样安装 loader 和配置 css: { preprocessorOptions: { scss: { charset: false, additionalData: '@use "@/assets/styles/global-scss-var.scss" as *;', }, }, // vite 中已集成了 postcss // https://vitejs.cn/config/#css-postcss postcss: { plugins: [ require('autoprefixer')({ overrideBrowserslist: ['Android 4.1', 'iOS 7.1', 'Chrome > 31', 'ff > 31', 'ie >= 8', '> 1%'], grid: false, }), ], }, }, build: { ...build, // 生产环境移除console minify: 'terser', terserOptions: { compress: { drop_console: false, drop_debugger: false, }, }, rollupOptions: { // 将 js 和 css 文件夹分离 // https://github.com/vitejs/vite/issues/3815 output: { chunkFileNames: 'static/js/[name]-[hash].js', entryFileNames: 'static/js/[name]-[hash].js', assetFileNames: 'static/[ext]/[name]-[hash].[ext]', }, }, }, server: { port: 1006, cors: true, proxy: { ...apiConfig.list.reduce((pre, cur) => { const prefix = `^/${cur.name}` return { ...pre, ...(cur.devServer ? { [prefix]: { target: 2000 + Object.keys(pre).length, changeOrigin: true, }, } : {}), } }, {}), }, }, } })