60 lines
1.7 KiB
JavaScript
60 lines
1.7 KiB
JavaScript
import { defineConfig, loadEnv } from 'vite'
|
|
import vue from '@vitejs/plugin-vue'
|
|
import path from 'path'
|
|
|
|
function parseAllowedHosts(value) {
|
|
if (!value) {
|
|
return ['localhost', '127.0.0.1', '.ts.net', '.beta.tailscale.net']
|
|
}
|
|
|
|
return value
|
|
.split(',')
|
|
.map(item => item.trim())
|
|
.filter(Boolean)
|
|
}
|
|
|
|
function buildHmrConfig(env) {
|
|
const hmr = {}
|
|
|
|
if (env.VITE_HMR_HOST) hmr.host = env.VITE_HMR_HOST
|
|
if (env.VITE_HMR_PROTOCOL) hmr.protocol = env.VITE_HMR_PROTOCOL
|
|
if (env.VITE_HMR_PORT) hmr.port = Number(env.VITE_HMR_PORT)
|
|
if (env.VITE_HMR_CLIENT_PORT) hmr.clientPort = Number(env.VITE_HMR_CLIENT_PORT)
|
|
if (env.VITE_HMR_PATH) hmr.path = env.VITE_HMR_PATH
|
|
|
|
return Object.keys(hmr).length ? hmr : undefined
|
|
}
|
|
|
|
// https://vite.dev/config/
|
|
export default defineConfig(({ mode }) => {
|
|
const repoRoot = path.resolve(__dirname, '..')
|
|
const rootEnv = loadEnv(mode, repoRoot, '')
|
|
const frontendEnv = loadEnv(mode, __dirname, '')
|
|
const env = { ...rootEnv, ...frontendEnv, ...process.env }
|
|
|
|
return {
|
|
plugins: [vue()],
|
|
resolve: {
|
|
alias: {
|
|
'@': path.resolve(__dirname, 'src'),
|
|
'@locales': path.resolve(__dirname, '../locales')
|
|
}
|
|
},
|
|
server: {
|
|
host: env.VITE_DEV_HOST || '0.0.0.0',
|
|
port: Number(env.VITE_DEV_PORT || 3000),
|
|
strictPort: true,
|
|
open: env.VITE_OPEN_BROWSER ? env.VITE_OPEN_BROWSER === 'true' : true,
|
|
allowedHosts: parseAllowedHosts(env.VITE_ALLOWED_HOSTS),
|
|
hmr: buildHmrConfig(env),
|
|
proxy: {
|
|
'/api': {
|
|
target: env.VITE_DEV_PROXY_TARGET || 'http://127.0.0.1:5001',
|
|
changeOrigin: true,
|
|
secure: false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
})
|