dart pub add

Add is one of the commands of the pub tool.

$ dart pub add [dev:]<package>[:<constraint>] [[dev:]<package>[:<constraint>]... ] [options]

This command adds the specified packages to the pubspec.yaml as dependencies, and then retrieves the dependencies to resolve pubspec.yaml.

The following example command is equivalent to editing pubspec.yaml to add the http package, and then calling dart pub get:

$ dart pub add http

Version constraint

By default, dart pub add uses the latest stable version of the package from the site. For example, if 0.13.3 is the latest stable version of the http package, then dart pub add http adds http: ^0.13.3 under dependencies in the pubspec.

You can also specify a constraint or constraint range:

$ dart pub add foo:2.0.0
$ dart pub add foo:'^2.0.0'
$ dart pub add foo:'>2.0.0 <3.0.1'

If dart pub add <package>:<constraint> is an existing dependency, it will update the constraint.

Dependency override

To specify a dependency override, add the override: prefix and include a source descriptor.

For example: To override all references to package:foo to use version 1.0.0 of the package, run the following command:

$ dart pub add override:foo:1.0.0

This adds the override to your pubspec.yaml file:

  foo: 1.0.0

Dev dependency

The dev: prefix adds the package as a dev dependency, instead of as a regular dependency.

$ dart pub add dev:foo           # adds newest compatible stable version of foo
$ dart pub add dev:foo:^2.0.0    # adds specified constraint of foo
$ dart pub add foo dev:bar       # adds regular dependency foo and dev dependency bar simultaneously

Previously the -d, --dev option:

$ dart pub add --dev foo

Source descriptor

The YAML descriptor syntax allows you to add multiple packages from different sources, and apply different options and constraints to each.

$ dart pub add [options] [dev:]<package>[:descriptor] [[dev:]<package>[:descriptor] ...]

The syntax reflects how dependencies are written in pubspec.yaml.


The descriptor syntax cannot be used in conjunction with any of the optional arguments it replaces. Their new, corresponding YAML sources are listed below.


Adds a git dependency.

$ dart pub add 'foo:{"git":""}'

You can specify the repository, and the branch or commit, or exact location, within that repository:

$ dart pub add 'foo:{"git":{"url":"../foo.git","ref":"branch","path":"subdir"}}'


Depends on the package in the specified Git repository.

Previously the --git-url=<git_repo_url> option:

$ dart pub add http --git-url=


With url, depends on the specified branch or commit of a Git repo.

Previously the --git-ref=<branch_or_commit> option:

$ dart pub add http --git-url= --git-ref=tmpfixes


With url, specifies the location of a package within a Git repo.

Previously the --git-path=<directory_path> option.


Adds a hosted dependency that depends on the package server at the specified URL.

$ dart pub add 'foo:{"hosted":""}'

Previously the --hosted-url=<package_server_url> option.


Adds a path dependency on a locally stored package.

$ dart pub add 'foo:{"path":"../foo"}'

Previously the --path=<directory_path> option.


Adds a package from the specified SDK source.

$ dart pub add 'foo:{"sdk":"flutter"}'

Previously the --sdk=<sdk_name> option:

$ dart pub add foo --sdk=flutter


For options that apply to all pub commands, see Global options.


By default, pub connects to the network to retrieve hosted packages (--no-offline). To use cached packages instead, use --offline. For details, see Getting while offline.

-n, --dry-run

Reports which dependencies would change, but doesn’t change any.


By default, pub precompiles executables in immediate dependencies (--precompile). To prevent precompilation, use --no-precompile.