Dart包至少是一个包含pubspec文件的目录。 pubspec包含有关软件包的一些元数据。此外,程序包可以包含dependencies (listed in the pubspec), Dart libraries, apps, resources, tests, images, and examples。
要使用软件包,请执行以下操作:
创建一个pubspec(一个名为pubspec.yaml的文件,该文件列出了程序包的依赖关系,并包括其他元数据,例如版本号)。
使用pub获取软件包的依赖关系。
如果您的Dart代码依赖于程序包中的库,请导入该库。
一个pubspec.yaml例子:
name: my_app
dependencies:
js: ^0.6.0
intl: ^0.15.8
pub get命令确定您的应用程序所依赖的软件包,并将它们放在中央系统缓存中。 如果您的应用程序依赖于已发布的程序包,则pub从pub.dev站点下载该程序包。 对于Git依赖项,pub会克隆Git存储库。 传递依存关系也包括在内。 例如,如果js包依赖于测试包,则pub会同时获取js包和测试包。
Pub会创建一个.packages文件(在您应用的顶级目录下),该文件会将您应用所依赖的每个包名称映射到系统缓存中的相应包。
import 'package:js/js.dart'asjs;
import 'package:intl/intl.dart';
当您第一次获得软件包的新依赖关系时,pub会下载与其他依赖项兼容的最新版本。然后,它会通过创建一个锁定文件来将您的软件包锁定为始终使用该版本。这是一个名为pubspec.lock的文件,pub创建并存储在pubspec旁边。它列出了程序包使用的每个依赖项(即时和传递)的特定版本。
如果您的软件包是应用程序软件包,则应将此文件检入源代码管理。这样,在您的应用程序上工作的每个人都使用所有软件包的相同版本。检入锁定文件还可以确保您部署的应用程序使用相同版本的代码。
pub upgrade命令告诉pub使用软件包依赖关系的最新可用版本重新生成锁定文件
Creating packages
库的pubspec.yaml文件与应用程序包的文件相同-表明该包是库。
库代码位于lib目录下,并且对其他软件包是公共的。 您可以根据需要在lib下创建任何层次结构。 按照约定,实现代码位于lib / src下。 lib / src下的代码被认为是私有的; 其他软件包则永远不需要导入src /。...要公开lib / src下的API,您可以导出lib / src文件到lib目录下。
在lib /下直接创建一个“ main”库文件,名字lib/
lib目录可能还包括其他可导入的非src库。 例如,也许您的主库跨平台工作,但是您创建了依赖dart:io或dart:html的单独的库。 某些软件包具有单独的库,但如果没有主库,则应使用前缀导入。
export 'src/hw_none.dart'// Stub implementation
if(dart.library.io) 'src/hw_io.dart'// dart:io implementation
if(dart.library.html) 'src/hw_html.dart';// dart:html implementation
In an app that can use dart:io (for example, a command-line app), export src/hw_io.dart.
In an app that can use dart:html (a web app), export src/hw_html.dart.
Otherwise, export src/hw_none.dart.
所有有条件导出的库都必须实现相同的API。
设计良好的库包易于测试。我们建议您使用测试包编写测试,并将测试代码放在包顶部的test目录中。
如果您创建任何供公众使用的命令行工具,请将其放置在bin目录中,该目录是公共的。使用pub global activate启用从命令行运行工具的功能。在pubspec的可执行文件部分列出该工具后,用户可以直接运行它,而无需调用pub global run。
如果提供一个示例,说明如何使用您的媒体库。这进入软件包顶部的sample目录。
您在开发过程中创建的任何不供公众使用的工具或可执行文件都进入tool目录。
发布程序包中介绍了将库发布到pub.dev站点时所需的其他文件,例如README.md和CHANGELOG.md。
为确保您包的API文档在pub.dev网站上看起来不错,请按照以下步骤操作:
在发布软件包之前,请运行dartdoc工具,以确保您的文档生成成功并且外观符合预期。
发布软件包后,请检查“版本”选项卡,以确保文档已成功生成。
如果文档根本没有生成,请在“版本”标签中单击“失败”以查看dartdoc输出。
dependencies:
transmogrify:
hosted:
name: transmogrify
url: http://your-package-server.com
version: ^1.4.0