关于dart:Flutter-115Flutter手把手教程Dart语言包管理工具Pub详解pub-getpub-cache使用

5次阅读

共计 4865 个字符,预计需要花费 13 分钟才能阅读完成。

作者 | 弗拉德
起源 | 弗拉德(公众号: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 <path-to-my_app>
 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 <package> [--version <constraint>] [--all]
pub cache repair

选项


add <package>    # 在你的缓存中装置一个库。--all   # 可选的选项。与 pub add 联合应用用于装置某个库的所有版本。--version <constraint>  # 可选的选项。与 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=<style>] [--dev] [--no-dev] [--executables]

依赖信息默认以树状的模式打印输出。
例如,有个我的项目的 pubspec 文件中申明了如下依赖信息:

dependencies:
  barback: ^0.15.2
  markdown: ^0.7.2

当你执行 pub deps 命令时则会看到我的项目的依赖图示如下:

markdown_converter 0.0.0
|-- barback 0.15.2+6
|   |-- collection 1.1.2
|   |-- path 1.3.6
|   |-- pool 1.1.0
|   |   '-- stack_trace...
|   |-- source_span 1.2.0
|   |   '-- path...
|   '-- stack_trace 1.4.2
|       '-- path...'-- markdown 0.7.2

选项

--style=<style> 或 -s <style> ## 指定的款式输入格局。用于指定依赖项打印输出的款式。# 共有 简洁、树状 和 列表 三种,默认是树状款式。# tree 以树状的模式打印依赖信息。这是默认格局。# list 以列表的模式打印依赖信息。# compact 以紧凑列表的模式打印依赖信息。--dev # 打印所有包依赖信息,包含开发期间依赖。它是默认选项。--no-dev #打印除了开发期依赖之外的所有包依赖。--executables #打印所有可用的可执行文件。

pub downgrade

在没有其它额定参数的状况下,pub downgrade命令会获取当前工作目录下 pubspec.yaml 文件中列出的所有依赖项以及它们间接依赖项的 最低 版本。

pub downgrade [--[no-]offline] [-n|--dry-run] [dependencies...]

例如:

$ pub downgrade
Resolving dependencies... (1.2s)
+ barback 0.13.0
+ collection 0.9.1
+ path 1.2.0
+ source_maps 0.9.0
+ source_span 1.0.0
+ stack_trace 0.9.1
Changed 6 dependencies!

pub downgrade 命令会创立一个 lockfile 文件。如果 lockfile 文件曾经存在,Pub 则会疏忽该文件并生成一个新的lockfile 文件,而后所有依赖项都会应用最低版本。

降级指定依赖项
你能够指定 pub downgrade 命令只将某个依赖项的版本降至最低且不影响其余依赖项。例如:

$ pub downgrade test
Resolving dependencies...
  barback 0.15.2+2
  bot 0.27.0+2
  browser 0.10.0+2
  chrome 0.6.5
  collection 1.1.0
  path 1.3.0
  pool 1.0.1
  source_span 1.0.2
< stack_trace 0.9.2 (was 1.1.1)
  stagexl 0.10.2
< test 0.10.0 (was 0.11.4)
These packages are no longer being depended on:
- matcher 0.11.3
Changed 3 dependencies!

如果你升高指定依赖项的版本,且该依赖项还有间接依赖项,那么在版本变更后这些间接依赖项可能不适配升高后的新版依赖项。此时,Pub 会尝试在新版本依赖项可承受的范畴内查找版本最高的该依赖项所依赖的间接依赖项。因而,通常而言,升高某个依赖项的版本后,其间接依赖项的版本也会随之升高。
获取新的依赖项
如果在执行 pub downgrade 命令前将某个依赖增加至 pubspec 文件中,则在执行该命令后会将该新的依赖项以及其间接依赖的其它依赖项下载并将其放到 .packages 文件中。这点与 pub get 命令统一。

移除依赖项
如果在 pub downgrade 命令前从 pubspec 文件移除了某个依赖项,则在执行该命令后会将该依赖项从 .packages 文件中移除,且代码应用到该依赖项的相干导入将变得不可用。所有该依赖项依赖的间接依赖项也同时会被移除,只有这些间接依赖项没有没其它的依赖项所依赖。这点也与pub get 命令统一。

离线降级
在没有网络的状况下你也仍然能够运行pub downgrade 命令。因为 Pub 会将 Package 下载到一个对立的缓存区并将其与零碎上其它的 Package 进行共享,如果你所需的 Package 是一个应用频率很高的 Package,那么很有可能它曾经被其它 Package 在应用时下载到对立缓存区中了,此时你能够间接依赖应用它。

然而,默认状况下,pub downgrade 命令会总是尝试获取线上的依赖版本,因而 Pub 能够确定依赖项是否有更新的版本。如果你不想 Pub 去线上查看,能够应用 --offline 命令参数让该命令在离线模式下执行。在离线模式下,Pub 只会从本地缓存区查找曾经下载到的可用 Package。

选项

--[no-]offline # 默认状况下,pub 将会通过网络查看(--no-offline)。要应用缓存的包,请应用 --offline。--dry-run 或 -n #报告将要扭转的依赖项,但不会真的扭转它。

pub publish

pub publish [--dry-run] [--force]

该命令用于将你的 Package 公布到 pub.dev 网站以供其他人下载和依赖。
选项

--dry-run 或 -n #该选项能够让你运行上传 Package 的整个流程但不会真正地上传任何文件到 pub.dev 网站。此操作能够让你在真正上传到 pub.dev 网站前查看你的上传等相干配置是否有误。--force 或 -f  #该选项让 Pub 在上传时不再向你进行确认。失常状况下,它会在你上传时向你显示 Package 的内容以及向你进行确认。

如果 Package 存在谬误,Pub 则会退出且不持续进行上传。如果呈现的是正告,则 Package 会仍旧被上传。如果你想确保你的 Package 在上传前没有正告,请确保不要应用 --force--dry-run 选项。

pub uploader

pub uploader [options] {add/remove} <email>

该命令容许 pub.dev 网站上某个 Package 的上传者为该 Package 增加或删除其它的上传者。其有两个子命令 addremove,能够将邮件地址作为某个上传者的标识以此来增加或删除上传者。例如:

pub uploader add bob@example.com # 咱们曾经向 bob@example.com 发送了一份邀请函,在他 / 她确认后就会成被退出上传者(权限)
pub uploader remove bob@example.com # // 胜利将该上传者从 package 中移除

如果 Package 有且只有一个上传者,则该上传者不能再被删除。你能够将本人从上传者列表中删除(只有 Package 中还有其它的上传者即可),然而一旦你删除了本人后则不能再将本人增加回去。

默认状况下,你批改的是当前工作目录中 Package 的上传者。你能够通过 –package 标识来指定批改哪个 Package 的上传者。例如:

pub uploader --package=transmogrify add bob@example.com 
 # // 咱们曾经向 bob@example.com 发送了一份邀请函,在他 / 她确认后就会成被退出上传者(权限)

通过 pub uploader add <email> 命令发送邀请,被邀请的用户必须 承受

其余不罕用的命令可参考:

pub outdated 应用办法参考:https://zhuanlan.zhihu.com/p/…
pub global 应用办法参考:https://www.jianshu.com/p/8a7…


正文完
 0