rakulang, dartlang, nimlang, golang, rustlang, lang lang no see

如何使用包

焉知非鱼

Dart 包管理工具 - pub

Dart 生态系统使用包来管理共享软件,如库和工具。要获得 Dart 包,你可以使用 pub 包管理器。你可以在 pub.dev 网站上找到公开的包,也可以从本地文件系统或其他地方加载包,比如 Git 仓库。无论你的包来自哪里,pub 都会管理版本依赖关系,帮助你获得相互之间以及与 SDK 版本兼容的包版本。

大多数精通 Dart 的 IDE 都提供了对 pub 的支持,包括创建、下载、更新和发布包。或者你可以在命令行中使用 pub

至少,一个 Dart 包是一个包含 pubspec 文件的目录。pubspec 包含一些关于包的元数据。此外,一个包可以包含依赖关系(在 pubspec 中列出),Dart 库,应用程序,资源,测试,图像和例子。

要使用一个包,请执行以下操作:

  • 创建一个 pubspec(一个名为 pubspec.yaml 的文件,它列出了软件包的依赖关系,并包含其他元数据,如版本号)。
  • 使用 pub 来获取你的包的依赖关系。
  • 如果你的 Dart 代码依赖于软件包中的一个库,则导入该库。

创建一个 pubspec #

pubspec 是一个名为 pubspec.yaml 的文件,它位于你的应用程序的顶级目录中。最简单的 pubspec 只列出了包名:

name: my_app

下面是一个 pubspec 的例子,它声明了两个包(jsintl)的依赖关系,这两个包都托管在 pub.dev 站点上:

name: my_app
dependencies:
  js: ^0.6.0
  intl: ^0.15.8

关于创建 pubspec 的详细信息,请参见 pubspec 文档和你要使用的包的文档。

获取软件包 #

一旦你有了 pubspec,你就可以从你的应用程序的顶级目录中运行 pub get:

$ cd <path-to-my_app>
$ pub get

这个过程被称为获取依赖关系。

pub get 命令可以确定您的应用程序依赖于哪些软件包,并将它们放在中央系统缓存中。如果您的应用程序依赖于已发布的包,pub 会从 pub.dev 站点下载该包。对于 Git 依赖,pub 会克隆 Git 仓库。还包括了过渡性依赖。例如,如果 js 包依赖于 test 包,pub 会同时抓取 js 包和 test 包。

Pub 会创建一个 .packages 文件(在你的应用程序的顶层目录下),将你的应用程序所依赖的每个包名映射到系统缓存中的对应包。

从包中导入库 #

要导入在包中找到的库,使用 package: 前缀:

import 'package:js/js.dart' as js;
import 'package:intl/intl.dart';

Dart 运行时在 package: 之后的所有内容都会在应用程序的 .package 文件中进行查找。

你也可以使用这种风格从你自己的包中导入库。比方说,transmogrify 包的布局如下:

transmogrify/
  lib/
    transmogrify.dart
    parser.dart
  test/
    parser/
      parser_test.dart

parser_test.dart 文件可以这样导入 parser.dart:

import 'package:transmogrify/parser.dart';

升级依赖关系 #

当你第一次为你的软件包获取一个新的依赖关系时,pub 会下载与你的其他依赖关系兼容的最新版本。然后,它通过创建一个 lockfile 锁文件来锁定您的软件包,使其始终使用该版本。这是一个名为 pubspec.lock 的文件,由 pub 创建并存储在 pubspec 的旁边。它列出了您的软件包所使用的每个依赖关系的特定版本 (即时的和过渡的)。

如果你的包是一个应用程序包,你应该把这个文件检查到源代码控制中。这样,在你的应用程序上工作的每个人都会使用所有包的相同版本。在 lockfile 文件中检查也可以确保你部署的应用使用相同版本的代码。

当你准备好将你的依赖项升级到最新版本时,使用 pub upgrade 命令:

$ pub upgrade

pub upgrade 命令告诉 pub 使用你的包的依赖关系的最新版本来重新生成 lockfile 文件。如果你只想升级一个依赖关系,你可以指定要升级的软件包:

$ pub upgrade transmogrify

该命令将 transmogrify 升级到最新版本,但其他一切都保持不变。

由于 pubspec 中有冲突的版本限制,pub upgrade 命令并不能总是将每个软件包升级到最新版本。要识别需要编辑 pubspec 的过期软件包,请使用 pub outdated

更多信息 #

下面的页面有更多关于软件包和 pub 包管理器的信息。

如何使用

参考

Pub 命令

pub 工具提供了以下命令:

有关所有 pub 命令的概述,请参阅 pub 工具文档

疑难解答

故障排除 pub 提供了使用 pub 时可能遇到的问题的解决方案。