bxztApp/packages/screen/vite.config.js

114 lines
2.9 KiB
JavaScript

import { defineConfig, loadEnv } from 'vite'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
import vue from '@vitejs/plugin-vue'
import { resolve } from 'path'
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
import cesium from 'vite-plugin-cesium'
const DEFAULT_BUILD_BASE = '/bxztpc/'
const normalizeBasePath = (value) => {
if (!value || value === '/') {
return '/'
}
let base = value.trim()
if (!base.startsWith('/')) {
base = `/${base}`
}
if (!base.endsWith('/')) {
base = `${base}/`
}
return base
}
const resolveCliBase = () => {
const argv = process.argv || []
const directFlagIndex = argv.indexOf('--base')
if (directFlagIndex !== -1 && argv[directFlagIndex + 1]) {
return argv[directFlagIndex + 1]
}
const customFlagIndex = argv.indexOf('--basePath')
if (customFlagIndex !== -1 && argv[customFlagIndex + 1]) {
return argv[customFlagIndex + 1]
}
const equalArg = argv.find(arg => arg.startsWith('--base='))
if (equalArg) {
return equalArg.split('=')[1]
}
const equalCustomArg = argv.find(arg => arg.startsWith('--basePath='))
if (equalCustomArg) {
return equalCustomArg.split('=')[1]
}
return undefined
}
export default defineConfig(({ command, mode }) => {
const env = loadEnv(mode, process.cwd(), '')
const baseCandidate =
command === 'build'
? resolveCliBase() ??
env.VITE_BASE_PATH ??
env.BASE_PATH ??
process.env.BASE_PATH ??
DEFAULT_BUILD_BASE
: '/'
const resolvedBase =
command === 'build' ? normalizeBasePath(baseCandidate) : '/'
const cesiumBaseUrl = resolvedBase === '/' ? '/cesium' : `/cesium`
return {
base: resolvedBase,
plugins: [
vue(),
AutoImport({
resolvers: [ElementPlusResolver()],
}),
Components({
resolvers: [ElementPlusResolver()],
}),
createSvgIconsPlugin({
iconDirs: [
resolve(__dirname, 'src/assets/icons/svg'),
resolve(__dirname, 'src/map/assets/icons')
],
symbolId: 'icon-[dir]-[name]',
}),
cesium(),
],
define: {
CESIUM_BASE_URL: JSON.stringify(cesiumBaseUrl),
},
resolve: {
alias: {
'@': resolve(__dirname, 'src'),
'@shared': resolve(__dirname, '../shared')
}
},
server: {
port: 3000,
open: true,
cors: true,
proxy: {
'/snow-ops-platform': {
target: 'http://8.137.54.85:8661/',
changeOrigin: true,
},
}
},
build: {
outDir: 'dist',
assetsDir: 'assets',
sourcemap: false,
rollupOptions: {
output: {
chunkFileNames: 'js/[name]-[hash].js',
entryFileNames: 'js/[name]-[hash].js',
assetFileNames: '[ext]/[name]-[hash].[ext]'
}
}
},
}
})