build_runner によるコード生成
アノテーションからボイラープレートを生成します
「build_runner によるコード生成」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。
コードを生成する理由
JSONの解析のように、繰り返しの多い定型コードがあります。Code generationを使うと、アノテーションからそのコードを自動生成でき、正確さと開発速度を保てます。⚙️
build_runnerを使う
build_runnerは、プロジェクト上でコードジェネレーターを実行するDartのツールです。ソースファイルを読み込み、アノテーションを見つけて、新しいファイルを生成します。
開発依存関係
build_runner はビルド時に実行され、アプリと一緒に配布されることはないため、pubspec.yaml の dev_dependencies に追加します。
dev_dependencies:
build_runner: ^2.4.0生成される part ファイル
ジェネレーターは同じディレクトリにある別のファイルへ書き込みます。慣例として名前の末尾が .g.dart になる part ディレクティブで、そのファイルを参照します。
part 'user.g.dart';ビルドを実行する
一度だけコード生成を行うには、build コマンドを実行します。コードを解析し、すべての .g.dart ファイルを作成または更新します。
dart run build_runner build監視モード
開発中は、watch モードにすると保存するたびに自動で再生成されます。手動で再実行しなくても、生成ファイルを常に最新の状態に保てます。
dart run build_runner watch古いファイルとの競合に対処する
出力ファイルが古いファイルと競合する場合は、--delete-conflicting-outputs を追加します。古い生成ファイルを削除して、最新のビルドを成功させます。
dart run build_runner build --delete-conflicting-outputsアノテーションが処理を決める
ジェネレーターが処理するのは、annotate した宣言だけです。アノテーションによって、どのクラスを処理し、どのコードを生成するかをビルダーに伝えます。
生成ファイルを編集しない
すべての .g.dart ファイルを read-only として扱ってください。次回のビルドで変更内容が上書きされるため、代わりにソースコードとアノテーションを編集します。
コミットするか無視するか
生成ファイルをコミットするか、.gitignore に追加して CI で再生成するかは、チームによって異なります。どちらを選ぶ場合も、方針を決めて一貫して運用してください。
広がるエコシステム
json_serializable や freezed など、多くのパッケージが build_runner と連携します。これらは1つの builder パイプラインを共有するため、1回のコマンドですべてを実行できます。
確認問題
ファイルを保存するたびにコードを再生成するコマンドはどれですか?
まとめ
build_runner はアノテーションを生成された .g.dart ファイルに変換します。dev_dependencies に追加し、build または watch を実行して、出力ファイルは決して編集しないでください。🎉
よくある質問
「build_runner によるコード生成」レッスンは無料ですか?
はい。「build_runner によるコード生成」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。
「build_runner によるコード生成」で何を学びますか?
アノテーションからボイラープレートを生成します ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Dart Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「build_runner によるコード生成」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDart Academyレッスンでコードを書いて実行できますか?
はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 組み込みアノテーション: override、deprecated
- カスタムアノテーションの作成
- build_runner によるコード生成
- json_serializable の実践