How to speed up code generation with build_runner in Dart & Flutter
Packages like Freezed compensate for missing Dart language features such as sealed unions and offer many useful features.
Many Flutter packages rely on build_runner, a build system for Dart code generation.
Unfortunately, build_runner takes long time to run because by default it analyzes all the Dart source files in your project.
There are two ways to mitigate this:
- move all files that depend on codegen to a separate package
- add a
build.yamlfile that specifies a subset of files to be processed:
targets: $default: builders: freezed:freezed: generate_for: include: - lib/models/**.dart
Setting this up correctly can save you a lot of time in the long run. 👍
You can use a suffix such as
*.codegen.dart for all files that need to be processed by
build_runner and update the
build.yaml like this:
targets: $default: builders: freezed:freezed: generate_for: include: - lib/**.codegen.dart
This way you can place the files anywhere you want in your project.
This tip was inspired by this thread on Twitter.
Code with Andrea is free for everyone. Help me keep it that way by checking out this sponsor:
Faster mobile builds; faster deliveries with Codemagic CI/CD: Do not waste valuable developer resources, replace manual intervention and build, test and deliver mobile apps 20% faster with CI/CD for mobile.