【Flutter】freezed・json_serializableのファイル生成先を変更するためのbuild.yaml
freezed・jsonserializableは、手動で作成するのが面倒なコードをサクッと生成できるため非常に便利です。
こんにちは、とりかつ(@torikatsu923)です。 今回の記事ではfreezed・json_serializableのファイル生成先を変更する方法を紹介します。
課題感
freezed・json_serializableは、手動で作成するのが面倒なコードをサクッと生成できるため非常に便利です。しかし、生成対象のクラスが増えるにつれて生成ファイルの数がとても多くなります。
APIとの通信まわりのオブジェクトを格納するディレクトリがこのようになってしまった経験がある方は少なくないと思います。
このままだと見通しが悪いため、生成ファイルは一箇所でまとめて管理したいですよね。
ファイル生成先を変更するためのbuild.yaml
以下のようにbuild.yamlで生成先を指定することで、ファイルの生成先を変更することができます。
build.yaml
targets:
$default:
builders:
source_gen|combining_builder:
options:
build_extensions:
'^lib/{{}}.dart': 'lib/generated/{{}}.g.dart'
freezed:
options:
build_extensions:
'^lib/{{}}.dart': 'lib/generated/{{}}.freezed.dart'
ここでfreezedとjson_serializable別で生成先を指定する必要がある点に注意です。
また、source_genをpubspec.yamlのdev_dependenciesに追加する必要がある点についても注意が必要です。
pubspec.yaml
dev_dependencies:
# ...
source_gen: ^1.2.1
これで自動生成ファイルを一箇所にまとめることができました。

参考
-
source_genのbuild.yamlの設定方法の紹介
-
生成先のパスの指定方法について
-
freezedのbuild_extensionsの対応についてのIssue
Generating files in different directories · Issue #553 · rrousselGit/freezed
-––