【Flutter 1-15】Flutter手把手教程Dart语言——包管理工具Pub详解、pub get,pub cache使用

作者 | 弗拉德
来源 | 弗拉德(公众号:fulade_me)

什么是Pub工具

Dart 生态系统使用包来管理共享软件,比如:库和工具。我们使用Pub包管理工具 来获取Dart包。在Pub上,可以找到公开可用的包。或者从本地文件系统或其他的位置,比如Git仓库,加载可用的包。无论包是从什么途径加载的, Pub 都会进行版本依赖管理,从而帮助我们获得版本兼容的软件包以及SDK。
pub工具包含管理 Package 、部署 Package 和部署命令行应用的命令。
Dart 包目录中至少包含一个pubspec文件。
【Flutter 1-15】Flutter手把手教程Dart语言——包管理工具Pub详解、pub get,pub cache使用_第1张图片
pubspec 文件记录一些关于项目的依赖数据。此外还有一些其他数据比如:Dart 库,应用,资源,测试,图片,以及示例。

下面是一个 pubspec 的示例,示例中声明依赖了在 Pub 站点上托管的两个包( js 和 intl ):

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

pub get

在项目中配置了pubspec文件后,就可以在项目根目录中执行pub get命令:

 cd 
 pub get

pub get命令确定当前应用所依赖的包,并将它们保存到中央系统缓存(central system cache)中。如果当前应用依赖了一个公开包,Pub会从Pub站点 该包。对于一个Git依赖,Pub会Clone该Git仓库。
同样包括包的相关依赖也会被下载。例如,如果 js 包依赖 test 包, pub 会同时获取js包和test包。

Pub 会创建一个.packages 文件(位于应用程序的根路目录下),该文件将应用程序所依赖的每个包名相应的映射到系统缓存中的包。
【Flutter 1-15】Flutter手把手教程Dart语言——包管理工具Pub详解、pub get,pub cache使用_第2张图片

pub upgrade

第一次获取依赖时,Pub 会下载依赖及其兼容的最新版本。然后通过创建lockfile 锁定依赖,以始终使用这个版本。 Pub会在pubspec旁创建并存储一个名为pubspec.lock文件。它列出了使用的每个依赖包的指定版本(当前包或传递包的版本)。
【Flutter 1-15】Flutter手把手教程Dart语言——包管理工具Pub详解、pub get,pub cache使用_第3张图片
在开发项目中的每个人都能够使用所有相同版本的包。同样加入到 lockfile 可以保证部署的应用使用的是同一版本的代码。

如果已经准备更新依赖到最新版本,使用命令 pub upgrade :

pub upgrade

上面的命令用于重新生成 lockfile 文件,并使用最新可用版本的依赖包。如果仅升级某个依赖,可以在命令中指定需要升级的包:

pub upgrade intl

上面的命令升级intl到最新版本,其它包不变。

注意pub upgrade 命令并非总是可以将所有的package更新到最新版本,原因是pubspec文件中的一些package之间有版本限制的冲突。

pub cache

用于管理 Pub 的本地 Package 缓存。使用该命令你可以将一个 Package 添加至缓存,或者清除所有缓存的 Package 并重新安装。
你可以使用pub cache add命令将新的 Package 添加至缓存。也可以使用pub cache repair 命令将Package从缓存中清除并重新安装。

pub cache add  [--version ] [--all]
pub cache repair

选项


add     # 在你的缓存中安装一个库。

--all   # 可选的选项。与 pub add 结合使用用于安装某个库的所有版本。

--version   # 可选的选项。与 pub add 结合使用根据限制条件安装最适合的版本。
# 例如:pub cache add barback --version "<=0.8.0 <0.110"  如果省略掉 --version,Pub 会从已知的版本中挑选一个最适合的进行安装。

repair # 如果 Pub 缓存中的 Package 被修改坏了的。例如,有人不小心修改了依赖内的文件,但是不知道该如何修改回来。pub cache repair 命令可以对系统缓存中的所有 Package 执行重安装以修正篡改的问题。

pub deps

该命令可以将 Package 的依赖图示打印输出到控制台。该图示中包括 Package 声明在 pubspec 文件中的直接依赖以及这些直接依赖所依赖的间接依赖

pub deps [--style=