Libraries是能够轻松建立共享模块化代码的好方法。在Dart生态系统中,Libraries是做为包建立和分发的。Dart有两种包:应用程序包、本地库和Libraries包;html
以下为最简单的Lib的布局:git
root dir
- lib
-file.dart
- pubspec.yaml
复制代码
一个Lib的最低要求是:github
pubspec.yaml:bash
Lib的pubspec.yaml
文件与应用程序的包的文件相同。没有特殊的名称来指定软件包是Lib。markdown
lib文件夹:模块化
Lib的代码位于lib目录下,而且对其余包是公共的。按照惯例实现的代码都在lib/src下。lib/src下的代码被认为是私有的;其余软件包永远不须要导入src/...,要使lib/src下的API公开,你能够在lib的文件中导出lib/src下的文件。工具
注:注意:若是未指定library,则会根据每一个lib的路径和文件名生成惟一标记。 所以,除非计划生成库级文档,不然应该从代码中省略库指令。布局
当建立小的单个Lib时,库包最容易维护、扩展和测试。在大多数状况下,每一个类都应该在各自的Lib中,除非有两个类耦合的状况。测试
注:part指令容许将库拆分为多个Dart文件,应该避免使用该指令。网站
直接在lib/.dart下建立一个Lib文件,它导出全部公共的API。这容许用户经过导入单个文件来获取库的全部功能。
Lib目录还可能包含其余可导入的非src库。例如,主库可能跨平台工做,但你建立依赖dart的Lib:io
或dart:html
。
root dir
- example
- example_server.dart
- lib
- src
-body.dart
-utils.dart
- shelf.dart
- shelf_io.dart
- test
- test.dart
- tool
- travis.sh
复制代码
在lib目录下,主库文件shelf.dart从lib/src中导出文件
export 'src/utils.dart'
export 'src/body.dart'
复制代码
导入库文件时,可使用package:指令指定该文件的URI:
import 'package:utilities/utilities.dart';
复制代码
可使用dartdoc工具来为Lib生成API文档。
若是lib是开源的,能够在Pub网站上共享它。 要发布或更新库,使用pub publish,它会上传您的包并建立或更新其页面。pub网站不只托管您的包,还生成并托管您的包的API参考文档。
注:要发布到Pub站点之外的地方,或者为了防止在任何地方发布,请使用pubspec中定义的publish_to字段。
发布Lib时,遵循pubspec格式和包结构很重要。其中一些是必需的,以便其余人可以使用你的包。 其余建议是帮助用户更容易理解和使用您的包。
在这两种状况下,pub都会尝试经过指出哪些更改有助于使你的程序包在Dart生态系统中发挥更好的做用。 上传包时还有一些其余要求:
请注意,与您的Google账户关联的电子邮件地址会与上传的任何软件包一块儿显示在Pub网站上。
Pub使用几个文件的内容在/packages/<your_package>中为您的包建立一个页面。 如下是影响包的页面外观的文件:
第一次发布时可使用dart run
pub publish --dry-run
复制代码
Pub将检查以确保你的包是否遵循pubspec格式和包结构布局约束,而后将包上传到Pub站点。 Pub还会显示它打算发布的全部文件。 如下是发布名为transmogrify的包的示例:
Publishing transmogrify 1.0.0
.gitignore
CHANGELOG.md
README.md
lib
transmogrify.dart
src
transmogrifier.dart
transmogrification.dart
pubspec.yaml
test
transmogrify_test.dart
Package has 0 warnings.
复制代码
当准备发布包时,删除--day-run参数:
pub pushlish
复制代码
当包成功上传到Pub站点后,任何pub用户均可以在他们的项目中下载或依赖它。 例如,若是刚刚发布了transmogrify软件包的1.0.0版本,那么另外一个Dart开发人员能够将其添加为pubspec.yaml中的依赖项:
dependencies:
transmogrify: ^1.0.0
复制代码