| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- import {defineConfig, loadEnv} from 'vite'
- import path from 'path'
- import fs from 'fs'
- import createVitePlugins from './vite/plugins'
- // https://vitejs.dev/config/
- export default defineConfig(({mode, command}) => {
- const env = loadEnv(mode, process.cwd())
- const {VITE_APP_ENV} = env
- const VITE_SERVICE_BASE_TITLE=env.VITE_SERVICE_BASE_TITLE
- const VITE_SERVER_URL=env.VITE_SERVER_URL
- const mockDir = path.resolve(__dirname, './mock/onemap')
- return {
- base: env.VITE_APP_BASE_TITLE,
- plugins: [
- createVitePlugins(env, command === 'build'),
- // mock 中间件(仅 development)
- {
- name: 'vite-plugin-mock-onemap',
- configureServer(server) {
- server.middlewares.use((req, res, next) => {
- if (mode !== 'development') return next()
- const url = req.url || ''
- const match = url.match(/^\/gw-api\/onemap\/(.+?)(?:\?.*)?$/)
- if (!match) return next()
- const file = path.join(mockDir, match[1] + '.json')
- if (!fs.existsSync(file)) return next()
- res.setHeader('Content-Type', 'application/json')
- res.end(fs.readFileSync(file, 'utf-8'))
- })
- }
- }
- ],
- resolve: {
- // https://cn.vitejs.dev/config/#resolve-alias
- alias: {
- // 设置路径
- '~': path.resolve(__dirname, './'),
- // 设置别名
- '@': path.resolve(__dirname, './src')
- },
- // https://cn.vitejs.dev/config/#resolve-extensions
- extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
- },
- // 打包配置
- build: {
- // https://vite.dev/config/build-options.html
- sourcemap: command === 'build' ? false : 'inline',
- outDir: 'dist',
- assetsDir: 'assets',
- chunkSizeWarningLimit: 2000,
- rollupOptions: {
- output: {
- chunkFileNames: 'static/js/[name]-[hash].js',
- entryFileNames: 'static/js/[name]-[hash].js',
- assetFileNames: 'static/[ext]/[name]-[hash].[ext]'
- }
- }
- },
- // vite 相关配置
- server: {
- port: env.VITE_APP_PORT,
- host: '0.0.0.0',
- open: true,
- proxy: {
- // https://cn.vitejs.dev/config/#server-proxy
- [VITE_SERVICE_BASE_TITLE]: {
- target: VITE_SERVER_URL,
- changeOrigin: true,
- rewrite: (path) => path.replace(new RegExp(`^${VITE_SERVICE_BASE_TITLE}`), ''),
- },
- // springdoc proxy
- '^/v3/api-docs/(.*)': {
- target: VITE_SERVER_URL,
- changeOrigin: true,
- }
- }
- },
- css: {
- postcss: {
- plugins: [
- {
- postcssPlugin: 'internal:charset-removal',
- AtRule: {
- charset: (atRule) => {
- if (atRule.name === 'charset') {
- atRule.remove()
- }
- }
- }
- }
- ]
- }
- }
- }
- })
|