Özet - Build sistemi
- Dart kursu
- Uzman
- Ders 30/47
- 5 dk
build_runner, Builder ve source_gen'i birleştirerek bir kod üreteci yazarsın.
Özet - Build sistemi
Bu grupta Dart build sistemini öğrendik: build_runner (çalıştırıcı), Builder (üretici arayüzü), source_gen (annotation tabanlı üretim), analyzer (AST çözümleme), custom_lint (özel denetim).
Temel: build_runner, Builder sınıflarını çalıştırır ve .g.dart üretir. source_gen, annotation'larla bu süreci otomatikleştirir. analyzer, kaynak kodu AST'ye çevirir.
Bu araçlar birlikte çalışır: analyzer çözümler, source_gen üretir, Builder sarar, build_runner çalıştırır. custom_lint ise ayrı bir denetim katmanı ekler.
Uygulama Özet: config + builder + lint
Bir BuildConfig sınıfı tanımla: final String outputExtension; BuildConfig(this.outputExtension);. Bir Builder sınıfı tanımla: String build(String input) => '// generated from $input';. Bir LintRule sınıfı tanımla: final String name; LintRule(this.name); void report() => print('lint: $name');. main içinde üçünden de bir örnek yarat; config.outputExtension, builder.build('user.dart') ve rule.report() ile yazdır.
Başlangıç kodu
void main() {
// BuildConfig, Builder ve LintRule sınıflarını tanımla
// her birinden bir örnek yarat; çıkış uzantısı, üretilen kod ve lint uyarısı yazdır
}Örnek çözüm
class BuildConfig {
final String outputExtension;
BuildConfig(this.outputExtension);
}
class Builder {
String build(String input) => '// generated from $input';
}
class LintRule {
final String name;
LintRule(this.name);
void report() => print('lint: $name');
}
void main() {
final config = BuildConfig('.g.dart');
final builder = Builder();
final rule = LintRule('avoid_print');
print(config.outputExtension);
print(builder.build('user.dart'));
rule.report();
}Beklenen çıktı
.g.dart // generated from user.dart lint: avoid_print
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Hangi araç .g.dart dosyalarını üretir?
- pub publish
- dartfmt
- build_runner Doğru cevap
- dart analyze
Açıklama: build_runner Builder'ları çalıştırıp .g.dart üretir.
2 Araçları eşleştir
| Kavram | Anlamı |
|---|---|
build_runner |
Çalıştırıcı |
Builder |
Üretici |
source_gen |
Kaynak üretimi |
analyzer |
AST çözümleyici |
custom_lint |
Madde motoru |
3 Üretilen dosya uzantısı
part 'user____';
part 'user.g.dart';
Açıklama: .g.dart üretilen dosyayı işaretler.