build_runner
- Dart kursu
- Uzman
- Ders 25/47
- 5 dk
build_runner ile kod üretimini öğrenirsin.
build_runner
build_runner, Dart için kod üretim aracıdır. Kaynak dosyalarını okur, Builder sınıflarını çalıştırır ve üretilen .g.dart dosyalarını yazar.
Çalıştırma: dart run build_runner build. İzleme kipi için --watch bayrağı eklenir; kaynak değişince otomatik yeniden üretim yapar.
Yapılandırma build.yaml dosyasındadır: hangi Builder'ların hangi dosyalarda çalışacağını belirtir. Üretilen dosyalar elle düzenlenmez.
build.yaml ve hedefler
build.yaml iki ana bölüm içerir: targets (hangi paketlerde üretim yapılacağı) ve builders (hangi Builder'ların etkin olduğu).
Örnek: builders:
my_builder|my_builder:
enabled: true. Bu, my_builder paketindeki Builder'ı açar.
Üretilen dosya adları kaynaktan türetilir: user.dart → user.g.dart. .g.dart uzantısı üretilen dosyayı işaretler.
Uygulama BuildConfig tanımla
Bir BuildConfig sınıfı tanımla: final List<String> inputExtensions ve final String outputExtension alanları, BuildConfig(this.inputExtensions, this.outputExtension) kurucusu. main içinde final config = BuildConfig(['.dart'], '.g.dart'); yarat; config.inputExtensions ve config.outputExtension yazdır.
Başlangıç kodu
void main() {
// BuildConfig sınıfını tanımla (inputExtensions, outputExtension)
// bir BuildConfig yarat; inputExtensions ve outputExtension yazdır
}Örnek çözüm
class BuildConfig {
final List<String> inputExtensions;
final String outputExtension;
BuildConfig(this.inputExtensions, this.outputExtension);
}
void main() {
final config = BuildConfig(['.dart'], '.g.dart');
print(config.inputExtensions);
print(config.outputExtension);
}Beklenen çıktı
[.dart] .g.dart
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 dart run build_runner build ne yapar?
- Birim testleri çalıştırır
- Builder'ları çalıştırıp kod üretir Doğru cevap
- AOT derleme yapar
- Kaynak dosyayı biçimlendirir
Açıklama: build_runner Builder'ları çalıştırır ve .g.dart dosyaları üretir.
2 Builder arayüzü
class MyBuilder implements ____ {
Future<void> build(BuildStep s) async {}
}
class MyBuilder implements Builder {
Future<void> build(BuildStep s) async {}
}
Açıklama: bir kod üreteci Builder arayüzünü uygular.
3 build_runner parçalarını eşleştir
| Kavram | Anlamı |
|---|---|
build_runner |
Kod üretici araç |
build.yaml |
Yapılandırma |
build |
Üretim alt komutu |
.g.dart |
Üretilen dosya |