跳到主要内容

dart pub global

Globalpub 工具的命令之一。

Pub 的 global 选项允许您在当前不在软件包内部时从命令行运行 Dart 脚本。在激活软件包之后,您可以从该软件包的 bin 目录运行脚本停用软件包会将其从您的全局可用软件包列表中移除。

例如,假设您想使用 webdev 从命令行服务您的 Dart Web 应用程序。

$ dart pub global activate webdev
$ webdev serve

如果这不起作用,您可能需要设置您的路径

要从软件包内部或从您的软件包依赖的软件包中运行 Dart 脚本,请参阅 dart run

激活软件包

#
dart pub global activate [--noexecutables] [--executable=<name>] [--overwrite] <package> [version-constraint]

当您希望能够从命令行运行软件包的一个或多个可执行文件时,请激活软件包。您可以激活位于 pub.dev 站点、Git 仓库或本地机器上的软件包。激活软件包后,请参阅运行脚本以从软件包的 bin 目录运行脚本。

当您激活软件包时,您可以指定一个可选的版本约束。有关用法示例,请参阅 constraint 标志。

在 pub.dev 站点上激活软件包

#
$ dart pub global activate <pub.dev package>

在 pub.dev 站点上指定要激活的软件包。例如

$ dart pub global activate markdown

使用 Git 激活软件包

#
$ dart pub global activate --source git <Git URL>
$ dart pub global activate -sgit <Git URL>

使用 --source git(或简写 -sgit)来激活 Git 仓库中的软件包。以下示例激活了 GitHub 上的 async_await 软件包,它们是等效的

$ dart pub global activate --source git https://github.com/dart-lang/async_await.git
$ dart pub global activate -sgit https://github.com/dart-lang/async_await.git

Pub 期望在 Git 仓库的根目录中找到软件包。要指定不同的位置,请将 --git-path 选项与相对于仓库根目录的路径一起使用

$ dart pub global activate -sgit https://github.com/dart-lang/http.git --git-path pkgs/http/

Pub 使用 Git 仓库的默认分支。要指定不同的分支或提交,请使用 --git-ref 选项

$ dart pub global activate -sgit https://github.com/dart-lang/http.git --git-ref 36f98e900347335af2338a0e087538009b7de2f9

在本地机器上激活软件包

#
$ dart pub global activate --source path <path>

使用 activate --source path <path> 在您的本地机器上激活软件包。以下示例从 ~/dart 目录激活 stopwatch 软件包

$ dart pub global activate --source path ~/dart/stopwatch

更新已激活的软件包

#

软件包激活后,您可以通过再次激活该软件包来升级它。

运行脚本

#

您可以直接从命令行运行已激活软件包中的脚本。如果您无法直接运行脚本,您也可以使用 dart pub global run

从 PATH 运行脚本

#

要直接从命令行运行脚本,请将系统缓存 bin 目录添加到您的 PATH 环境变量中。

例如,假设您已经激活了 webdev 软件包,但您仍然无法运行命令

$ dart pub global activate webdev
$ webdev serve
-bash: webdev: command not found

验证系统缓存的 bin 目录是否在您的路径中。以下 macOS 上的 PATH 变量包含系统缓存

$ echo $PATH
/Users/<user>/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/Users/<user>/.pub-cache/bin

如果您的 PATH 中缺少此目录,请找到适合您平台的文件并添加它。

平台缓存位置
macOS 或 Linux$HOME/.pub-cache/bin
Windows*%LOCALAPPDATA%\Pub\Cache\bin

* 系统缓存的确切位置可能因 Windows 版本而异。

您现在可以直接调用命令

$ cd web_project
$ webdev serve

如果脚本仍然无法从命令行运行,则该软件包可能未针对此功能进行配置。您仍然可以使用 dart pub global run 运行脚本。

使用 dart pub global run 运行脚本

#
$ dart pub global run <package>:<executable> [args...]

即使脚本未配置为从命令行运行,您仍然可以使用 dart pub global run。以下命令从 foo 软件包运行 bin/bar.dart 脚本,并传入两个参数。

$ dart pub global run foo:bar arg1 arg2

配置软件包可执行文件

#

如果您不是软件包开发者,则可以跳过本节。

软件包可以将其某些脚本公开为可直接从命令行运行的可执行文件。脚本必须在 pubspec 文件的 executables 条目中列出。例如,以下 pubspec 文件将 bin/helloworld.dart 标识为 helloworld 软件包的可执行文件

yaml
name: helloworld

executables:
  helloworld:

未能将脚本列在 executables 标签下会降低脚本的可用性:未列出的脚本可以使用 dart pub global run 执行,但不能直接从命令行执行。

停用软件包

#
$ dart pub global deactivate <package>

使用 deactivate 从可用全局软件包列表中移除软件包。例如

$ dart pub global deactivate markdown

您将无法再使用 dart pub global run 或在命令行调用软件包的脚本。

列出已激活的软件包

#
$ dart pub global list

使用 list 列出所有当前激活的软件包。

选项

#

有关适用于所有 pub 命令的选项,请参阅 全局选项

[版本约束]

#

使用 dart pub global activate <package> [version-constraint] 来指定软件包的特定版本。例如,以下命令拉取 markdown 软件包的 0.6.0 版本

$ dart pub global activate markdown 0.6.0

如果您指定一个范围,pub 将选择满足该约束的最佳版本。例如

$ dart pub global activate foo <3.0.0

--no-executables

#

使用 dart pub global activate <package> --no-executables 全局激活指定的软件包,但不将任何可执行文件放入 bin 中。您必须使用 dart pub global run 才能运行任何可执行文件。

--executable=<name>-x <name>

#

dart pub global activate 一起使用,以将指定的可执行文件添加到您的 PATH。您可以传递多个这些标志。

例如,以下命令将 barbaz(但不包括 foo 可能定义的任何其他可执行文件)添加到您的 PATH。

$ dart pub global activate foo -x bar -x baz

--overwrite

#

使用 dart pub global activate <package> --overwrite 覆盖任何先前激活的同名全局可执行文件。如果您不指定此标志,则不会替换预先存在的可执行文件。