如何使用软件包
Dart 生态系统使用软件包来管理共享软件,如库和工具。要获取 Dart 软件包,请使用pub 软件包管理器。你可以在 pub.dev 网站 上找到公开的软件包,或者你可以从本地文件系统或其他地方(如 Git 存储库)加载软件包。无论你的软件包来自哪里,pub 都会管理版本依赖项,帮助你获取彼此兼容且与 SDK 版本兼容的软件包版本。
大多数 精通 Dart 的 IDE 都提供对使用 pub 的支持,包括创建、下载、更新和发布软件包。或者,你可以在命令行中使用 dart pub
。
Dart 软件包至少是一个包含 pubspec 文件 的目录。pubspec 包含有关软件包的一些元数据。此外,软件包还可以包含依赖项(在 pubspec 中列出)、Dart 库、应用、资源、测试、图片和示例。
若要使用软件包,请执行以下操作
- 创建一个 pubspec(一个名为
pubspec.yaml
的文件,其中列出了软件包依赖项并包括其他元数据,例如版本号)。 - 使用
dart pub get
检索软件包的依赖项。 - 如果你的 Dart 代码依赖于软件包中的库,请导入该库。
创建 pubspec
#pubspec 是一个名为 pubspec.yaml
的文件,位于应用程序的顶级目录中。最简单的 pubspec 只列出软件包名称
name: my_app
以下是一个 pubspec 示例,它声明对托管在 pub.dev 网站上的两个软件包(js
和 intl
)的依赖项
name: my_app
dependencies:
js: ^0.6.0
intl: ^0.17.0
若要更新 pubspec.yaml
文件,无需手动编辑,你可以运行 dart pub add
命令。以下示例添加了对 vector_math
的依赖项。
$ dart pub add vector_math
Resolving dependencies...
+ vector_math 2.1.3
Downloading vector_math 2.1.3...
Changed 1 dependency!
有关创建 pubspec 的详细信息,请参阅 pubspec 文档 和你想要使用的软件包的文档。
获取软件包
#拥有 pubspec 后,你可以从应用程序的顶级目录运行 dart pub get
$ cd <path-to-my_app>
$ dart pub get
此过程称为获取依赖项。
dart pub get
命令确定你的应用依赖哪些软件包,并将它们放入一个中心 系统缓存 中。如果你的应用依赖于已发布的软件包,pub 会从 pub.dev 网站 下载该软件包。对于 Git 依赖项,pub 会克隆 Git 存储库。传递依赖项也包括在内。例如,如果 js
软件包依赖于 test
软件包,pub
会获取 js
软件包和 test
软件包。
Pub 会创建一个 package_config.json
文件(位于 .dart_tool/
目录下),该文件将你的应用依赖的每个软件包名称映射到系统缓存中的相应软件包。
从软件包导入库
#若要导入在软件包中找到的库,请使用 package:
前缀
import 'package:js/js.dart' as js;
import 'package:intl/intl.dart';
Dart 运行时会获取 package:
之后的所有内容,并在你的应用的 package_config.json
文件中查找它。
你还可以使用此样式从你自己的软件包中导入库。假设 transmogrify
软件包的布局如下
transmogrify/
lib/
transmogrify.dart
parser.dart
test/
parser/
parser_test.dart
parser_test.dart
文件可以像这样导入 parser.dart
import 'package:transmogrify/parser.dart';
升级依赖项
#首次为你的软件包获取新依赖项时,pub 会下载与其它的依赖项兼容的最新版本。然后,pub 会锁定你的软件包,始终使用该版本,方法是创建一个锁定文件。这是一个名为 pubspec.lock
的文件,pub 会创建该文件并将其存储在你的 pubspec 旁边。它列出了你的软件包使用的每个依赖项(直接和传递)的特定版本。
如果你的软件包是 应用程序软件包,你应该将此文件检入 源代码管理。这样,所有处理你的应用的人员都会使用其所有依赖项的相同版本。检入锁定文件还可以确保你的已部署应用使用相同版本的代码。
当你准备好将你的依赖项升级到最新版本时,请使用 dart pub upgrade
命令
$ dart pub upgrade
dart pub upgrade
命令会告知 pub 重新生成锁定文件,使用软件包依赖项的最新可用版本。如果你只想升级一个依赖项,你可以指定要升级的软件包
$ dart pub upgrade transmogrify
该命令将 transmogrify
升级到最新版本,但保持其他所有内容不变。
dart pub upgrade
命令不能总是将每个软件包升级到其最新版本,这是因为 pubspec 中存在冲突的版本约束。若要识别需要编辑 pubspec 的过时软件包,请使用 dart pub outdated
。
更多信息
#以下页面包含有关软件包和 pub 软件包管理器的更多信息。
操作方法
#参考
#Pub 子命令
#dart pub
工具提供以下子命令
有关所有 dart pub
子命令的概述,请参阅 pub 工具文档。
故障排除
#pub 故障排除 提供了解决你在使用 pub 时可能遇到的问题的方案。