汚いディレクトリ構成はいや
最近Flutterでアプリを作って見ているんですが、freezedが便利でいっぱい使いたい気持ちになります。
が、生成ファイルがディレクトリに氾濫するので、ものごっつ醜くなってしまい、嫌な気持ちになってました。
build.yamlの指定で出力ディレクトリを単純にlib/generated/*配下などに出力することもできますが、partの指定が相対的になるため、オリジンのファイル側の指定がまた汚くなるジレンマ、、、、
vue.jsのデコレータのように、rootのパスを@とかで指定できればいいんですがね、、、(package:を使えればいいのですが)
先輩に相談したところ、LiveTemplateでpart部を自動生成するのを教えてもらいました。それで半自動でpart部を生成するのも良いかと思います。
で、教えてもらったドキュメントをみて、build.yamlのconfiguring-outputsを見てたら、ディレクトリ指定の出力方法書いてあるじゃないですか。
今の所の答え
targets:
$default:
builders:
source_gen|combining_builder:
options:
build_extensions:
'lib/{{dir}}/{{file}}.dart': 'lib/{{dir}}/generated/{{file}}.g.dart'
freezed:
options:
build_extensions:
'lib/{{dir}}/{{file}}.dart': 'lib/{{dir}}/generated/{{file}}.freezed.dart'
で、part 'generated/filename.g.dart'
と書けばいいし。
こうすればディレクトリ構成が下記のようになります。
root/
└ src/
└ domain/
└ filename.dart
└ generated/
└ filename.g.dart
└ filename.freezed.dart
これは綺麗なのでは?
まとめ
いったん、気分は落ち着きましたが、できれば本当は生成ファイルなど一つにまとめて気にしなくてもいいようにしたいです。
良い方法があったら教えて欲しいです。