swagger_generator_flutter/docs/MIGRATION_CONFIG_LOADER.md

72 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 warningsinfo 忽略)
- dart test: 全部通过
- grep "ConfigLoader" 在源代码与测试中均无匹配