You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 22:14:57