Contents

Glossary of package terms

软件包管理pub工具的文档中使用以下术语.

Application package

不能用作库的软件包. 应用程序包可能依赖于其他包,但从不依赖于它们自己. 它们通常旨在直接在命令行或浏览器中运行. 应用程序包的相反是库包 .

应用程序包应将其锁定文件检查到源代码控制中,以便在应用程序上工作的每个人以及部署应用程序的每个位置都具有一致的依赖关系集. 由于它们的依赖关系受锁定文件的约束,因此应用程序包通常会为其依赖关系的版本约束指定any值.

Dependency

您的程序包所依赖的另一个程序包. 如果您的软件包要从其他软件包中导入代码,则该软件包必须是依赖项. 依赖关系在包的pubspec中指定,并在包依赖项中进行了描述.

要查看包使用的依赖关系,请使用pub deps .

Entrypoint

在Dart的一般上下文中, 入口点是Dart库,可直接由Dart实现调用. 当您在<script>标记中引用Dart库或将其作为命令行参数传递给独立的Dart VM时,该库就是入口点. 换句话说,通常是.dart文件包含main() .

在pub的上下文中, 入口点包根包是依赖关系图的根. 通常它将是一个应用程序. 当您运行应用程序时,它就是入口点包. 在此上下文中,它依赖的所有其他程序包都不是入口点.

包在某些情况下可以是入口点,而在其他情况下则不能. 假设您的应用程序使用库程序包A.运行应用程序时,A不是入口点程序包. 但是,如果您转到A并执行其测试,那么在这种情况下,它切入点,因为不涉及您的应用程序.

Entrypoint directory

包内的目录,该目录允许包含Dart入口点 .

Pub拥有以下目录的白名单: benchmarkbinexampletesttoolweb . 这些子目录的任何子目录( bin除外)也可以包含入口点.

Immediate dependency

程序包直接使用其自身的依赖项 . 您在pubspec中列出的依赖项是程序包的直接依赖项. 所有其他依赖关系都是传递依赖关系 .

Library package

其他软件包可以依赖的软件包. 库软件包可以依赖于其他软件包也可以是自身依赖. 它们还可以包括直接运行的脚本. 库包的反面是应用程序包 .

不要将库程序包的锁定文件检入源代码管理中,因为库应支持一系列依赖项版本. 库包的直接依赖项版本约束应尽可能宽,同时仍要确保依赖项与经过测试的版本兼容.

Since semantic versioning requires that libraries increment their major version numbers for any backwards incompatible changes, library packages will usually require their dependencies’ versions to be greater than or equal to the versions that were tested and less than the next major version. So if your library depended on the (fictional) transmogrify package and you tested it at version 1.2.1, your version constraint would be ^1.2.1.

Lockfile

名为pubspec.lock的文件,它为程序包所依赖的每个直接和传递依赖关系指定具体版本和其他标识信息.

与仅列出立即依赖项并允许版本范围的pubspec不同,锁定文件可将整个依赖关系图全面地固定到特定的软件包版本. 锁定文件可确保您可以重新创建应用程序使用的软件包的确切配置.

当您运行pub getpub upgradepub downgradepub upgrade自动为您生成锁定文件. 如果您的软件包是应用程序软件包,则通常会将其检入源代码管理. 对于库包,您通常不会.

SDK constraint

软件包声明支持的Dart SDK本身的声明版本. SDK约束是使用常规版本约束语法指定的,但是在pubspec的特殊环境部分 .

Source

pub可以从中获取软件包的一种地方. 来源不是pub.dev网站或某些特定Git URL之类的特定位置. 每个资源都描述了以某种方式访问​​程序包的一般过程. 例如, git是一种来源. git源知道在给定Git URL的情况下如何下载软件包. 有几种不同的受支持来源 .

System cache

当pub获得远程软件包时,它将其下载到pub维护的单个系统缓存目录中. 在Mac和Linux上,此目录默认为~/.pub-cache . 在Windows上,该文件位于%LOCALAPPDATA%\Pub\Cache\bin ,尽管其确切位置可能因Windows版本而异. 您可以使用PUB_CACHE环境变量指定其他位置.

程序包进入系统缓存后,pub将创建一个.packages文件,该文件将应用程序使用的每个程序包映射到缓存中的相应程序包.

您只需下载一次给定版本的软件包即可,然后可以根据需要在多个软件包中重复使用它. 您可以删除并重新生成.packages文件,而无需访问网络.

Transitive dependency

包间接使用的依赖项,因为其依赖项之一需要它. 如果您的程序包依赖于A,而后者又依赖于B,而后者又依赖于C,则A是直接依赖关系,而B和C是可传递依赖关系 .

Uploader

具有软件包管理权限的人. 软件包上载器可以上载该软件包的新版本,也可以为该软件包添加和删​​除其他上载器.

如果程序包具有经过验证的发布者,则发布者的所有成员都可以上传该程序包.

Verified publisher

拥有一组软件包的一个或多个用户. 每个经过验证的发布者都由经过验证的域名(例如dart.dev)标识 . 有关经过验证的发布者的一般信息,请参阅" 经过验证的发布者"页面 . 有关创建经过验证的发布者并将其传输到软件包的详细信息,请参阅发布软件包的文档.

Version constraint

对程序包的每个依赖项施加的约束,用于指定程序包应与之配合使用的哪个版本. 这可以是单个版本( 0.3.0 )或一系列版本( ^1.2.1 ). 虽然也允许any操作,但是出于性能原因,我们不建议您这样做.

有关更多信息,请参见版本约束 .

库软件包应始终为其所有依赖性指定版本约束,但是应用程序软件包通常应允许其依赖性的任何版本,因为它们使用锁文件来管理其依赖性版本.

有关更多信息,请参见Pub Versioning Philosophy .

by  ICOPY.SITE