dart pub global
Global 是 pub 工具 的命令之一。
Pub 的 global
选项允许您在当前不在包内时从命令行运行 Dart 脚本。在激活包后,您可以从该包的 bin
目录运行脚本。停用包会将其从全局可用包列表中移除。
例如,假设您想使用 webdev 从命令行服务您的 Dart Web 应用。
dart pub global activate webdev
webdev serve
如果这不起作用,您可能需要设置您的 PATH。
要在包内或从您的包所依赖的包中运行 Dart 脚本,请参阅 dart run。
激活包
#dart pub global activate [--noexecutables] [--executable=<name>] [--overwrite] <package> [version-constraint]
当您希望能够从命令行运行一个或多个包的可执行文件时,请激活该包。您可以激活位于 pub.dev 网站、Git 仓库或您本地机器上的包。激活包后,请参阅运行脚本,以运行该包的 bin
目录中的脚本。
激活包时,您可以指定可选的版本约束。请参阅约束标志以获取使用示例。
在 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
目录是否在您的 PATH 中。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
we
如果脚本仍然无法从命令行运行,则该包可能未配置此功能。您仍然可以使用 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 包的可执行文件
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 中。您可以传递多个此类标志。
例如,以下命令将 bar
和 baz
(但不包含 foo
可能定义的任何其他可执行文件)添加到您的 PATH 中。
dart pub global activate foo -x bar -x baz
--overwrite
#使用 dart pub global activate <package> --overwrite
覆盖任何先前激活的同名全局可执行文件。如果您未指定此标志,则不会替换现有的可执行文件。