如何为build.yaml文件配置多套构建规则?
解决json_serializable分目录配置不同规则的问题
你的配置失败是因为错误给json_serializable builder加了自定义后缀(|request/|response),下面是两种可行的正确配置方案:
方案一:拆分独立Target(推荐)
给请求、响应模型分别创建子Target,各自配置专属规则:
targets: # 主Target,关联两个子Target api_package_name: dependencies: - api_package_name:request_models - api_package_name:response_models # 请求模型专属配置 api_package_name:request_models: sources: - "lib/src/models/request/*.dart" builders: json_serializable: options: include_if_null: false checked: true create_factory: false explicit_to_json: true field_rename: snake # 响应模型专属配置 api_package_name:response_models: sources: - "lib/src/models/response/*.dart" builders: json_serializable: options: checked: true create_to_json: false field_rename: snake
方案二:同一Target下按路径匹配配置
不想拆分Target的话,可通过路径覆盖实现差异化配置:
targets: api_package_name: builders: json_serializable: enabled: true generate_for: - "lib/src/models/request/*.dart" - "lib/src/models/response/*.dart" options: # 全局通用选项 field_rename: snake checked: true # 请求模型路径专属选项 "lib/src/models/request/*.dart": include_if_null: false create_factory: false explicit_to_json: true # 响应模型路径专属选项 "lib/src/models/response/*.dart": create_to_json: false
验证配置的步骤
- 清理旧生成文件:执行
dart run build_runner clean - 重新生成代码:执行
dart run build_runner build --delete-conflicting-outputs - 检查对应
.g.dart文件,确认请求模型没有fromJson工厂方法、响应模型没有toJson方法,即说明配置生效
内容的提问来源于stack exchange,提问作者zex_rectooor
相关产品推荐
相关产品推荐

