Contents

Glossary of package terms

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

Application package

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

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

Dependency

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

要查看软件包使用的依赖关系,请使用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

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

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

由于语义版本控制要求库为任何向后不兼容的更改增加库的主版本号,因此库软件包通常将要求其依赖项的版本大于或等于已测试的版本且小于下一个主版本. 因此,如果您的库依赖于(虚构的) transmogrify软件包,并且您在1.2.1版进行了测试,则版本约束将为^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上,该文件位于%APPDATA%\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操作,但是出于性能原因,我们不建议您这样做.

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

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

For more information, see Pub Versioning Philosophy.

by  ICOPY.SITE