作者 | 弗拉德
来源 | 弗拉德(公众号:fulade_me)
什么是Pub工具
Dart 生态系统使用包来管理共享软件,比如:库和工具。我们使用Pub包管理工具 来获取Dart包。在Pub上,可以找到公开可用的包。或者从本地文件系统或其他的位置,比如Git仓库,加载可用的包。无论包是从什么途径加载的, Pub 都会进行版本依赖管理,从而帮助我们获得版本兼容的软件包以及SDK。
pub工具包含管理 Package 、部署 Package 和部署命令行应用的命令。
Dart 包目录中至少包含一个pubspec文件。
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 文件(位于应用程序的根路目录下),该文件将应用程序所依赖的每个包名相应的映射到系统缓存中的包。
pub upgrade
第一次获取依赖时,Pub 会下载依赖及其兼容的最新版本。然后通过创建lockfile
锁定依赖,以始终使用这个版本。 Pub会在pubspec
旁创建并存储一个名为pubspec.lock
文件。它列出了使用的每个依赖包的指定版本(当前包或传递包的版本)。
在开发项目中的每个人都能够使用所有相同版本的包。同样加入到 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=