Генерация кода с build_runner
Создавайте шаблонный код из аннотаций
«Генерация кода с build_runner» — бесплатный урок Dart Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Dart Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Dart Academy содержит 4 уроков всего.
Зачем генерировать код
Некоторый код представляет собой повторяющийся шаблонный код, например разбор JSON. Генерация кода создаёт его за Вас на основе аннотаций, помогая работать быстро и без ошибок. ⚙️
Знакомство со средством сборки
Средство сборки Dart запускает генераторы кода для Вашего проекта. Оно читает исходные файлы, находит аннотации и создаёт новые файлы.
Зависимость для разработки
Добавьте build_runner в dev_dependencies файла pubspec.yaml, поскольку он запускается во время сборки и никогда не поставляется вместе с приложением.
dev_dependencies:
build_runner: ^2.4.0Сгенерированный файл части
Генераторы записывают результат в соседний файл. Подключите его директивой part; по соглашению его имя должно заканчиваться на .g.dart.
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Аннотации управляют процессом
Генераторы работают только с объявлениями, которые вы пометили аннотацией. Аннотация указывает сборщику, какой класс обработать и какой код создать.
Не редактируйте сгенерированные файлы
Считайте каждый файл .g.dart доступным только для чтения. Следующая сборка перезапишет ваши изменения, поэтому вместо этого редактируйте исходный код и аннотации.
Зафиксировать или игнорировать
Команды могут фиксировать сгенерированные файлы в репозитории или добавить их в .gitignore и выполнять сборку в CI. В любом случае выберите одну политику и придерживайтесь её.
Более широкая экосистема
С build_runner работают многие пакеты, например json_serializable и freezed. Они используют общий конвейер builder, поэтому одна команда запускает их все.
Быстрая проверка
Какая команда выполняет повторную генерацию кода после каждого сохранения файла?
Итоги
build_runner превращает аннотации в сгенерированные файлы .g.dart. Добавьте его в dev_dependencies, запустите build или watch и никогда не редактируйте результат. 🎉
Часто задаваемые вопросы
Урок «Генерация кода с build_runner» бесплатный?
Да — полный текст урока «Генерация кода с build_runner» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Dart Academy, подпишись на CoddyKit PRO. Курс Dart Academy содержит 4 уроков всего.
Чему я научусь в уроке «Генерация кода с build_runner»?
Создавайте шаблонный код из аннотаций Ты практикуешь Dart Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Dart Academy?
Предыдущий опыт не требуется. Dart Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Генерация кода с build_runner»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Dart Academy?
Да. Каждый урок Dart Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Встроенные аннотации: override, deprecated
- Написание собственных аннотаций
- Генерация кода с build_runner
- json_serializable в действии