To use build_runner
, you need a 2.x version of the Dart SDK.
If you have issues using build_runner
, see the
Troubleshooting section, below.
-
Edit your package's pubspec.yaml file, adding dev dependencies on build_runner and build_web_compilers:
dart pub add dev:build_runner dev:build_web_compilers
-
Get package dependencies:
dart pub get
-
Start the server:
dart run build_runner serve
While the serve
command runs, every change you save triggers a rebuild.
The first build is the slowest. After that, assets are cached on disk and incremental builds are faster.
Build with --output <directory name>
to write files into a merged output
directory with file paths that match internally referenced URIs. This can be
used with the build
, watch
, and serve
commands. This directory can also be
used with a different server if the serve
command is insufficient.
To output only part of the package, for example to output only the web
directory, use --output web:<directory name>
.
In addition to serve you can use:
-
build: Runs a single build and exits. This is most useful if your build also generates output to your source directory. With
--output <dirname>
this also creates a merged output directory with all sources and generated assets. -
watch: Like
build
but reruns after file changes. With--output <dirname>
the merged output directory will be kept up to date with changes. This can be used to keep the outputs updated for use with another filed-based development server. -
test: Creates an output directory and runs
dart run test
within it. This command requires a dev dependency onbuild_test
.
By default build_web_compilers
uses dartdevc. To switch to dart2js, pass
--release
to dart run build_runner build
(or serve
). Pass args to dart2js
by creating a build.yaml
file.
targets:
$default:
builders:
build_web_compilers:entrypoint:
options:
dart2js_args:
- --minify
- --fast-startup
-
Make sure you're using a 2.x SDK.
dart --version
-
Check the versions of the packages that your app depends on. They should all be compatible with a 2.x SDK.
If you see a FileSystemException, saying the directory listing failed due to too many open files, you might need to increase the OS limits.
For details, see #857.