swagger_generator_flutter/docs/MIGRATION_CONFIG_LOADER.md

2.5 KiB
Raw Permalink Blame History

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 是:

final config = ConfigRepository.loadSync();
// 或
final config = await ConfigRepository.load();

代码改造示例

Before:

final name = ConfigLoader.getGeneratorName();
final apiDir = ConfigLoader.getApiDir();
if (!ConfigLoader.shouldSkipFile(filePath)) { /* ... */ }

After:

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" 在源代码与测试中均无匹配