Files
happy-life-star/mini-program/src/config/env.js
T

98 lines
2.1 KiB
JavaScript

const ENV_TYPE = {
DEV: 'dev',
TEST: 'test',
PROD: 'prod'
}
const normalizeEnv = (value) => {
if (!value) return ENV_TYPE.DEV
if (value === 'development' || value === 'dev') return ENV_TYPE.DEV
if (value === 'production' || value === 'prod') return ENV_TYPE.PROD
if (value === 'test') return ENV_TYPE.TEST
return ENV_TYPE.DEV
}
const currentEnv = normalizeEnv(import.meta.env.VITE_APP_ENV || import.meta.env.MODE)
const envConfig = {
[ENV_TYPE.DEV]: {
API_BASE_URL: 'http://localhost:19089',
WS_URL: 'ws://localhost:19089',
DEBUG: true
},
[ENV_TYPE.TEST]: {
API_BASE_URL: 'https://lifescript.happylifeos.com/api',
WS_URL: 'wss://lifescript.happylifeos.com/ws',
DEBUG: true
},
[ENV_TYPE.PROD]: {
API_BASE_URL: 'https://lifescript.happylifeos.com/api',
WS_URL: 'wss://lifescript.happylifeos.com/ws',
DEBUG: false
}
}
const getConfig = () => {
const base = envConfig[currentEnv] || envConfig[ENV_TYPE.DEV]
const apiBaseUrl = import.meta.env.VITE_API_BASE_URL || base.API_BASE_URL
const wsUrl = import.meta.env.VITE_WS_URL || base.WS_URL
const debug = import.meta.env.VITE_DEBUG !== undefined
? import.meta.env.VITE_DEBUG === 'true'
: base.DEBUG
// 添加诊断日志
if (debug) {
console.log('[ENV] 环境配置:', {
rawEnv: import.meta.env.VITE_APP_ENV,
normalizedEnv: currentEnv,
API_BASE_URL: apiBaseUrl,
WS_URL: wsUrl,
DEBUG: debug,
isFromEnvFile: import.meta.env.VITE_API_BASE_URL ? 'yes' : 'fallback-to-config'
})
}
return {
API_BASE_URL: apiBaseUrl,
WS_URL: wsUrl,
DEBUG: debug
}
}
const getEnvValue = (key) => {
const config = getConfig()
return config[key]
}
const isDev = () => {
return currentEnv === ENV_TYPE.DEV
}
const isTest = () => {
return currentEnv === ENV_TYPE.TEST
}
const isProd = () => {
return currentEnv === ENV_TYPE.PROD
}
export {
ENV_TYPE,
currentEnv,
getConfig,
getEnvValue,
isDev,
isTest,
isProd
}
export default {
ENV_TYPE,
currentEnv,
getConfig,
getEnvValue,
isDev,
isTest,
isProd
}