The build_runner package provides general-purpose commands for generating files, and for optionally testing the generated files or serving both source and generated files. Read this page for an overview of using build_runner, with links to where you can find more information. For details of using build_runner with a specific package, see the documentation for that package.
The build_runner commands work with builders—packages that use the Dart build system to generate output files from input files. For example, the json_serializable and built_value_generator packages define builders that generate Dart code.
Although the Dart build system is a good alternative to
reflection (which has performance issues) and
macros (which Dart’s compilers don’t support),
it can do more than just read and write Dart code.
For example, the sass_builder package implements a builder that
.css files from
Setting up build_runner
To use build_runner, add a dev dependency on build_runner to your app’s pubspec:
dev_dependencies: # ··· build_runner: ^1.0.0 build_test: ^0.10.3
Depending on build_test is optional; do it if you’ll be testing your code.
As usual after
pubspec.yaml changes, run
pub get or
$ pub get
Using built-in commands
How you use the build_runner commands depends on whether you’re using the Dart SDK or the Flutter SDK. Here are examples of using the build_runner build command:
$ # From a directory that contains a pubspec.yaml file: $ pub run build_runner build # Dart SDK $ flutter packages pub run build_runner build # Flutter SDK
The build_runner package includes the following commands:
- Performs a one-time build.
- Runs a development server.
Instead of directly using this command,
you can use
webdev serve, which has convenient default behavior.
- Runs tests.
- Launches a build server that watches for edits to input files. Responds to changes by performing incremental rebuilds.
If you’re working on web-specific code, see the webdev and build_runner page.
For details on using build_runner, see the following:
- Documentation for packages that require you to use build_runner. These packages generally have a dependency on build or on build_runner.
- Build_runner documentation: