# 环境变量配置指南 SearchGal 使用 `.env` 文件进行全局配置管理。 ## 快速开始 1. 复制示例文件: ```bash cp .env.example .env ``` 2. 根据需要修改 `.env` 文件中的配置 3. 重启开发服务器使配置生效 ## 配置文件 - `.env` - 本地环境配置(不提交到 Git) - `.env.example` - 配置示例(提交到 Git) - `src/config/env.ts` - 配置读取和类型定义 ## 使用方法 ### 方式 1:直接导入配置对象(推荐) ```typescript import { CONFIG } from '@/config' // 使用 API 配置 const apiUrl = CONFIG.api.defaultApiUrl console.log(apiUrl) // https://cf.api.searchgal.top // 使用功能开关 if (CONFIG.features.enableComments) { // 初始化评论系统 } // 使用搜索配置 const cooldown = CONFIG.search.cooldown console.log(cooldown) // 30000 ``` ### 方式 2:按需导入 ```typescript import { API_CONFIG, FEATURE_FLAGS, SEARCH_CONFIG } from '@/config' // API 配置 console.log(API_CONFIG.defaultApiUrl) // 功能开关 console.log(FEATURE_FLAGS.enableVndb) // 搜索配置 console.log(SEARCH_CONFIG.defaultMode) ``` ### 方式 3:直接访问环境变量(不推荐) ```typescript // ❌ 不推荐:需要手动处理类型和默认值 const apiUrl = import.meta.env.VITE_DEFAULT_API_URL // ✅ 推荐:使用配置对象,有类型提示和默认值 import { API_CONFIG } from '@/config' const apiUrl = API_CONFIG.defaultApiUrl ``` ## 配置分类 ### 1. API 配置 (`API_CONFIG`) ```typescript API_CONFIG.defaultApiUrl // 默认搜索 API API_CONFIG.vndbApiUrl // VNDB API API_CONFIG.translateApiUrl // AI 翻译 API API_CONFIG.statusApiUrl // 状态检查 API API_CONFIG.randomImageApi // 随机背景图片 API ``` ### 2. 应用配置 (`APP_CONFIG`) ```typescript APP_CONFIG.name // 应用名称 APP_CONFIG.title // 应用标题 APP_CONFIG.description // 应用描述 APP_CONFIG.url // 网站 URL ``` ### 3. 功能开关 (`FEATURE_FLAGS`) ```typescript FEATURE_FLAGS.enablePwa // PWA 支持 FEATURE_FLAGS.enableSw // Service Worker FEATURE_FLAGS.enableComments // 评论系统 FEATURE_FLAGS.enableVndb // VNDB 集成 FEATURE_FLAGS.enableTranslate // AI 翻译 FEATURE_FLAGS.enableHistory // 搜索历史 FEATURE_FLAGS.enableCache // 缓存系统 FEATURE_FLAGS.enablePerformance // 性能监控 FEATURE_FLAGS.enableDevLogs // 开发日志 ``` ### 4. 搜索配置 (`SEARCH_CONFIG`) ```typescript SEARCH_CONFIG.defaultMode // 默认搜索模式 SEARCH_CONFIG.cooldown // 搜索冷却时间(毫秒) SEARCH_CONFIG.defaultResultsPerPage // 默认显示结果数 SEARCH_CONFIG.loadMoreCount // 每次加载更多的数量 SEARCH_CONFIG.maxHistoryItems // 最大历史记录数 ``` ### 5. 缓存配置 (`CACHE_CONFIG`) ```typescript CACHE_CONFIG.vndbCacheDuration // VNDB 缓存时长(毫秒) CACHE_CONFIG.searchCacheDuration // 搜索结果缓存时长(毫秒) CACHE_CONFIG.imageCacheDuration // 图片缓存时长(毫秒) CACHE_CONFIG.maxCacheSize // 最大缓存数量 ``` ### 6. UI 配置 (`UI_CONFIG`) ```typescript UI_CONFIG.themePrimary // 主题主色调 UI_CONFIG.themeAccent // 主题强调色 UI_CONFIG.toastDuration // Toast 通知默认时长(毫秒) UI_CONFIG.scrollOffset // 滚动偏移量(像素) UI_CONFIG.scrollTopThreshold // 回到顶部按钮显示阈值(像素) ``` ### 7. 第三方服务 (`THIRD_PARTY_CONFIG`) ```typescript THIRD_PARTY_CONFIG.artalkServer // Artalk 服务器地址 THIRD_PARTY_CONFIG.artalkSite // Artalk 站点名称 THIRD_PARTY_CONFIG.busuanziEnabled // 不蒜子统计 ``` ### 8. 性能配置 (`PERFORMANCE_CONFIG`) ```typescript PERFORMANCE_CONFIG.statusCheckInterval // 状态检查间隔(毫秒) PERFORMANCE_CONFIG.statusCheckTimeout // 状态检查超时(毫秒) ``` ### 9. 开发配置 (`DEV_CONFIG`) ```typescript DEV_CONFIG.port // 开发服务器端口 DEV_CONFIG.hmr // 热更新 DEV_CONFIG.sourcemap // Source Map DEV_CONFIG.isDev // 是否开发环境 DEV_CONFIG.isProd // 是否生产环境 DEV_CONFIG.mode // 运行模式 ``` ## 实际使用示例 ### 示例 1:在 Store 中使用 ```typescript // src/stores/cache.ts import { CACHE_CONFIG } from '@/config' export const useCacheStore = defineStore('cache', () => { const vndbCacheDuration = ref(CACHE_CONFIG.vndbCacheDuration) const searchCacheDuration = ref(CACHE_CONFIG.searchCacheDuration) const maxCacheSize = ref(CACHE_CONFIG.maxCacheSize) // ... }) ``` ### 示例 2:在组件中使用 ```vue ``` ### 示例 3:在 API 调用中使用 ```typescript // src/api/search.ts import { API_CONFIG } from '@/config' export async function searchGame(query: string) { const response = await fetch(`${API_CONFIG.defaultApiUrl}/search`, { method: 'POST', body: JSON.stringify({ query }), }) return response.json() } ``` ### 示例 4:条件渲染 ```vue ``` ## 环境区分 Vite 支持多环境配置: - `.env` - 所有环境加载 - `.env.local` - 所有环境加载,但会被 git 忽略 - `.env.development` - 开发环境 - `.env.production` - 生产环境 优先级:`.env.[mode].local` > `.env.[mode]` > `.env.local` > `.env` ## 注意事项 1. **环境变量必须以 `VITE_` 开头**才能在客户端代码中访问 2. **修改 .env 后需要重启开发服务器** 3. **不要在 .env 中存储敏感信息**(如密钥、密码) 4. **使用配置对象而不是直接访问环境变量**,获得更好的类型支持 5. **生产环境的配置**应该通过构建工具或部署平台设置 ## 类型安全 所有配置都有完整的 TypeScript 类型支持: ```typescript import type { AppConfig } from '@/config' // 获取完整配置的类型 const config: AppConfig = CONFIG // 自动补全和类型检查 config.api.defaultApiUrl // ✅ 类型安全 config.api.invalidKey // ❌ 编译错误 ``` ## 调试 开发环境下,配置会自动打印到控制台: ```javascript // 打开浏览器控制台查看 📦 Application Config: { api: {...}, app: {...}, features: {...}, ... } ``` 可以通过 `VITE_ENABLE_DEV_LOGS=false` 关闭此功能。