diff --git a/src/cli.ts b/src/cli.ts index 5b8d826..14e0868 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -5,14 +5,21 @@ */ import { resolve } from 'path'; +import { existsSync } from 'node:fs'; +import { homedir } from 'node:os'; import { config as dotenvConfig } from 'dotenv'; import { createApp } from './app.js'; import { getConfig } from './utils/config.js'; import { checkClaudeAvailable } from './claude/index.js'; import { install as startupInstall, uninstall as startupUninstall, isPlatformSupported, getPlatformName } from './startup/index.js'; -// 加载环境变量 -dotenvConfig({ path: resolve(process.cwd(), '.env') }); +// 加载环境变量:优先当前目录,兜底 ~/.claude-client/.env +const localEnvPath = resolve(process.cwd(), '.env'); +const globalEnvPath = resolve(homedir(), '.claude-client', '.env'); +if (existsSync(localEnvPath)) { + dotenvConfig({ path: localEnvPath }); +} +dotenvConfig({ path: globalEnvPath }); const args = process.argv.slice(2); const command = args[0]; diff --git a/src/utils/config.ts b/src/utils/config.ts index 9b0c515..bc0a788 100644 --- a/src/utils/config.ts +++ b/src/utils/config.ts @@ -4,10 +4,17 @@ import { config as dotenvConfig } from 'dotenv'; import { resolve } from 'path'; +import { existsSync } from 'node:fs'; +import { homedir } from 'node:os'; import type { AppConfig, FeishuDomain, ClaudePermissionMode } from '../types/index.js'; -// 加载环境变量 -dotenvConfig({ path: resolve(process.cwd(), '.env') }); +// 加载环境变量:优先当前目录,兜底 ~/.claude-client/.env +const localEnvPath = resolve(process.cwd(), '.env'); +const globalEnvPath = resolve(homedir(), '.claude-client', '.env'); +if (existsSync(localEnvPath)) { + dotenvConfig({ path: localEnvPath }); +} +dotenvConfig({ path: globalEnvPath }); function getEnvString(key: string, defaultValue?: string): string { const value = process.env[key];