Files
mini-programs/src/config/env.ts
2025-08-23 15:14:37 +08:00

105 lines
2.5 KiB
TypeScript

import Taro from '@tarojs/taro'
// 环境类型
export type EnvType = 'development' | 'test' | 'production'
// 环境配置接口
export interface EnvConfig {
name: string
apiBaseURL: string
timeout: number
enableLog: boolean
enableMock: boolean
}
// 各环境配置
const envConfigs: Record<EnvType, EnvConfig> = {
// 开发环境
development: {
name: '开发环境',
apiBaseURL: 'https://sit.light120.com',
timeout: 15000,
enableLog: true,
enableMock: true
},
// 测试环境
test: {
name: '测试环境',
apiBaseURL: 'https://sit.light120.com',
timeout: 12000,
enableLog: true,
enableMock: false
},
// 生产环境
production: {
name: '生产环境',
apiBaseURL: 'https://sit.light120.com',
timeout: 10000,
enableLog: false,
enableMock: false
}
}
// 获取当前环境
export const getCurrentEnv = (): EnvType => {
// 在小程序环境中,使用默认逻辑判断环境
// 可以根据实际需要配置不同的判断逻辑
// 可以根据实际部署情况添加更多判断逻辑
// 比如通过 Taro.getEnv() 获取当前平台环境
const currentEnv = Taro.getEnv()
// 在开发调试时,可以通过修改这里的逻辑来切换环境
// 默认在小程序中使用生产环境配置
if (currentEnv === Taro.ENV_TYPE.WEAPP) {
// 微信小程序环境
return 'production'
}
// 默认返回开发环境(便于调试)
return 'development'
}
// 获取当前环境配置
export const getCurrentConfig = (): EnvConfig => {
const env = getCurrentEnv()
return envConfigs[env]
}
// 获取指定环境配置
export const getEnvConfig = (env: EnvType): EnvConfig => {
return envConfigs[env]
}
// 是否为开发环境
export const isDevelopment = (): boolean => {
return getCurrentEnv() === 'development'
}
// 是否为生产环境
export const isProduction = (): boolean => {
return getCurrentEnv() === 'production'
}
// 是否为测试环境
export const isTest = (): boolean => {
return getCurrentEnv() === 'test'
}
// 环境配置调试信息
export const getEnvInfo = () => {
const config = getCurrentConfig()
return {
env: getCurrentEnv(),
config,
taroEnv: Taro.getEnv(),
platform: Taro.getEnv() === Taro.ENV_TYPE.WEAPP ? '微信小程序' :
Taro.getEnv() === Taro.ENV_TYPE.H5 ? 'H5' :
Taro.getEnv() === Taro.ENV_TYPE.RN ? 'React Native' : '未知'
}
}
// 导出当前环境配置(方便直接使用)
export default getCurrentConfig()