(projectRoot, isDev = false)
| 92 | } |
| 93 | |
| 94 | export function loadConfig(projectRoot, isDev = false) { |
| 95 | const possiblePaths = isDev |
| 96 | ? [path.join(projectRoot, 'src', 'config.json')] |
| 97 | : [path.join(projectRoot, 'dist', 'config.json'), path.join(projectRoot, 'config.json')] |
| 98 | |
| 99 | const result = loadJsonFile(possiblePaths, true) |
| 100 | |
| 101 | const missingFields = [] |
| 102 | if (!result.data.baseURL) missingFields.push('baseURL') |
| 103 | if (!result.data.sessionPath) missingFields.push('sessionPath') |
| 104 | if (result.data.headless === undefined) missingFields.push('headless') |
| 105 | if (!result.data.workers) missingFields.push('workers') |
| 106 | |
| 107 | if (missingFields.length > 0) { |
| 108 | log('ERROR', '无效的 config.json - 缺少必需字段:') |
| 109 | missingFields.forEach(field => log('ERROR', ` - ${field}`)) |
| 110 | log('ERROR', `配置文件: ${result.path}`) |
| 111 | process.exit(1) |
| 112 | } |
| 113 | |
| 114 | return result |
| 115 | } |
| 116 | |
| 117 | export function loadAccounts(projectRoot, isDev = false) { |
| 118 | const possiblePaths = isDev |
no test coverage detected