This page explains how to use
a tool it depends on —
to build, serve, and test your web apps.
The webdev package provides
which wraps around the more general-purpose
Usually you can use
webdev instead of directly using
The only time most web app developers run
build_runner is for tests.
The easiest way to get
webdev is to globally install it,
so that it can be in your PATH.
Before you can use
your web app must depend on the
build_runner and build_web_compilers packages.
Installing and updating webdev
webdev using pub:
$ dart pub global activate webdev
Use the same command to update
We recommend updating
webdev whenever you update your Dart SDK
webdev commands unexpectedly fail.
Depending on build_* packages
webdev or (in a web app context)
you must be in the root directory of a package that depends on
the build_runner and build_web_compilers packages.
If you’re testing the app,
it must also depend on build_test.
To depend on these packages,
add the following dev dependencies
to your app’s
dev_dependencies: # ··· build_runner: ^1.11.0 build_test: ^1.3.0 build_web_compilers: ^2.12.0
As usual after
pubspec.yaml changes, run
dart pub get or
dart pub upgrade:
$ dart pub get
Using webdev and build_runner commands
This section describes how to use the following commands:
- webdev serve
- Runs a development server that continuously builds a web app.
- webdev build
- Builds a deployable version of a web app.
- build_runner test
- Runs tests.
You can customize your build using build config files. For details, see the build_web_compilers package.
To launch a development server, which serves your app and watches for source code changes, use the following command:
webdev serve [--debug | --release] [ [<directory>[:<port>]] ... ]
$ webdev serve # uses dartdevc
The first dartdevc build is the slowest. After that, assets are cached on disk, and incremental builds are much faster.
To enable Dart DevTools, add the
$ webdev serve --debug # enables Dart DevTools
To use dart2js instead of dartdevc, add the
$ webdev serve --release # uses dart2js
You can specify different directory-port configurations. For example, the following command changes the test port from the default (8081) to 8083:
$ webdev serve web test:8083 # App: 8080; tests: 8083
Use the following command to build your app:
webdev build [--no-release] --output [<dirname>:]<dirname>
By default, the
build command uses the dart2js web compiler to create a
production version of your app. Add
--no-release to compile with dartdevc.
--output option, you can control which top-level project folders are
compiled and where output is written.
For example, the following command uses dart2js to compile the project’s
web folder into the
$ webdev build --output web:build
build_runner test command to run your app’s component tests:
$ dart pub run build_runner test [build_runner options] -- -p <platform> [test options]
For example, here’s how to run all Chrome platform tests:
$ dart pub run build_runner test -- -p chrome
To see all available build_runner options, use the
$ dart pub run build_runner test -h
Arguments after the empty
are passed directly to the test package runner.
To see all command-line options for the test package runner,
use this command:
$ dart pub run test -h
For a complete list of
webdev options, run
webdev --help or see the
Also see the following pages: