72 lines
2.5 KiB
Markdown
72 lines
2.5 KiB
Markdown
# ConfigLoader → ConfigRepository 迁移指南
|
||
|
||
状态: 迁移完成(ConfigLoader 已软弃用,待最终移除)
|
||
最后更新: 2025-11-22
|
||
|
||
## 背景
|
||
旧版使用静态类 ConfigLoader 读取和暴露配置。新版引入 ConfigRepository(实例),提供只读视图和更清晰的 API,同时支持同步/异步加载与内部缓存。
|
||
|
||
本仓库已完成全量迁移并删除 ConfigLoader,以下为映射关系与示例,便于外部或下游项目迁移。
|
||
|
||
## API 映射表
|
||
|
||
- getFileHeaderTemplate() → config.fileHeaderTemplate
|
||
- getGeneratorName() → config.generatorName
|
||
- getAuthor() → config.author
|
||
- getCopyright() → config.copyright
|
||
- getBaseDir() → config.baseDir
|
||
- getApiDir() → config.apiDir
|
||
- getModelsDir() → config.modelsDir
|
||
- getVersionExtractionPattern() → config.versionExtractionPattern
|
||
- getDefaultVersion() → config.defaultVersion
|
||
- getBaseResultImport() → config.baseResultImport
|
||
- getBasePageResultImport() → config.basePageResultImport
|
||
- getApiClientClassName() → config.apiClientClassName
|
||
- getApiClientFileName() → config.apiClientFileName
|
||
- getIncludedTags() → config.includedTags
|
||
- getExcludedTags() → config.excludedTags
|
||
- getSplitByTags() → config.splitByTags
|
||
- getPackageImports() → config.packageImports
|
||
- shouldSkipFile(path) → config.shouldSkipFile(path)
|
||
- getIgnoredDirectories() → config.ignoredDirectories
|
||
- getIgnoredFiles() → config.ignoredFiles
|
||
- getSwaggerUrls() → config.swaggerUrls
|
||
|
||
其中 config 是:
|
||
```dart
|
||
final config = ConfigRepository.loadSync();
|
||
// 或
|
||
final config = await ConfigRepository.load();
|
||
```
|
||
|
||
## 代码改造示例
|
||
|
||
Before:
|
||
```dart
|
||
final name = ConfigLoader.getGeneratorName();
|
||
final apiDir = ConfigLoader.getApiDir();
|
||
if (!ConfigLoader.shouldSkipFile(filePath)) { /* ... */ }
|
||
```
|
||
|
||
After:
|
||
```dart
|
||
final config = ConfigRepository.loadSync();
|
||
final name = config.generatorName;
|
||
final apiDir = config.apiDir;
|
||
if (!config.shouldSkipFile(filePath)) { /* ... */ }
|
||
```
|
||
|
||
## 性能建议
|
||
- 在同一执行流程中,尽量复用单个 ConfigRepository 实例,避免重复磁盘 IO。
|
||
- 可在构造函数中注入或使用懒加载 + 静态缓存(见 GenerationOutputService 中的 _config 实现)。
|
||
|
||
## 向后兼容
|
||
- 当前仓库已删除 ConfigLoader;如你的项目仍依赖它,请参照映射表替换为 ConfigRepository,并运行 analyze/test 确认。
|
||
|
||
## 验证
|
||
- 迁移完成后,应确保:
|
||
- dart analyze: 0 errors / 0 warnings(info 忽略)
|
||
- dart test: 全部通过
|
||
- grep "ConfigLoader" 在源代码与测试中均无匹配
|
||
|