title | description |
---|---|
dart pub add |
Use dart pub add to add a dependency. |
Add is one of the commands of the pub tool.
$ dart pub add [{dev|override}:]<package>[:descriptor] [[{dev|override}:]<package>[:descriptor] ...] [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
By default, dart pub add
uses the
latest stable version of the package from the pub.dev site
that is compatible with your SDK constraints and dependencies.
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 your pubspec.yaml
.
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 the specified package is an existing dependency in your pubspec.yaml
,
dart pub add
updates the dependency's constraint
to the one specified in the command.
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
To specify a dependency override, add the override:
prefix and
include a version constraint or
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:
dependency_overrides:
foo: 1.0.0
:::version-note
The YAML-formatted descriptor syntax was added in Dart 2.19.
The descriptor replaces arguments like
--path
, --sdk
, --git-<option>
, etc.
Pub still supports these arguments, but
the recommended method is now the YAML-descriptor.
The descriptor and the replaced arguments can't be used together.
:::
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|override}:]<package>[:descriptor] [[{dev|override}:]<package>[:descriptor] ...]
The syntax reflects how dependencies are written in pubspec.yaml
.
'<package>:{"<source>":"<descriptor>"[,"<source>":"<descriptor>"],"version":"<constraint>"}'
Adds a git dependency.
$ dart pub add 'foo:{"git":"https://github.com/foo/foo"}'
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=https://github.com/my/http.git
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=https://github.com/my/http.git --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":"my-pub.dev"}'
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.
:::note
The previous pub add
syntax for options
(without YAML descriptors) applies the
specified options to all the packages
included in an invocation of the command.
For example, dart pub add test http --dev
will add both the test
and http
packages
as dev dependencies.
:::
{% render 'tools/pub-option-no-offline.md' %}
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
.
In a Pub workspace dart pub add
will add
dependencies only to the package in the current directory.
{% render 'pub-problems.md' %}