EasyDarwin/vite.config.js

87 lines
2.4 KiB
JavaScript

import { fileURLToPath, URL } from 'node:url'
import { resolve } from 'node:path'
import * as process from 'node:process'
import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
// import VueDevTools from 'vite-plugin-vue-devtools'
import Components from 'unplugin-vue-components/vite'
import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers'
import UnoCSS from 'unocss/vite'
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
import { visualizer } from 'rollup-plugin-visualizer'
import viteCompression from 'vite-plugin-compression'
import { ViteImageOptimizer } from 'vite-plugin-image-optimizer'
const CWD = process.cwd()
const timestamp = Date.parse(new Date())
// https://vitejs.dev/config/
export default ({ mode }) => {
const env = loadEnv(mode, CWD)
// console.log(mode, env, CWD)
return defineConfig({
plugins: [
vue(),
// VueDevTools(),
Components({
resolvers: [
AntDesignVueResolver({
importStyle: false,
}),
],
}),
UnoCSS(),
createSvgIconsPlugin({
iconDirs: [resolve(CWD, 'src/assets/svg')],
symbolId: 'svg-icon-[dir]-[name]',
}),
ViteImageOptimizer(),
],
build: {
rollupOptions: {
output: {
chunkFileNames: `assets/js/[name]-[hash].${timestamp}.js`,
entryFileNames: `assets/js/[name]-[hash].${timestamp}.js`,
manualChunks(id) {
if (id.includes('node_modules')) {
return id
.toString()
.split('node_modules/')[1]
.split('/')[0]
.toString()
}
},
},
},
outDir:'./Win/web', // 打包到win 下
// outDir:'./Linux/web', // 打包到Linux 下
},
css: {
preprocessorOptions: {
less: {
javascriptEnabled: true,
},
},
},
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url)),
},
},
server: {
open: true,
port: 3001,
proxy: {
'/api/v1': {
target: env.VITE_APP_API_BASE_URL,
secure: false,
changeOrigin: true,
},
'/snap': {
target: env.VITE_APP_API_BASE_URL,
secure: false,
changeOrigin: true,
},
},
},
})
}