跳到主要內容

dart pub global

Globalpub 工具 的命令之一。

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 包的可執行檔案

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 覆蓋任何先前啟用的同名全域性可執行檔案。如果您未指定此標誌,則不會替換現有的可執行檔案。