一、Dart : 建立并发布Dart Libraries;

  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的路径和文件名生成惟一标记。 所以,除非计划生成库级文档,不然应该从代码中省略库指令。布局

组织一个Dart Lib

  当建立小的单个Lib时,库包最容易维护、扩展和测试。在大多数状况下,每一个类都应该在各自的Lib中,除非有两个类耦合的状况。测试

注:part指令容许将库拆分为多个Dart文件,应该避免使用该指令。网站

  直接在lib/.dart下建立一个Lib文件,它导出全部公共的API。这容许用户经过导入单个文件来获取库的全部功能。

  Lib目录还可能包含其余可导入的非src库。例如,主库可能跨平台工做,但你建立依赖dart的Lib:iodart: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'
复制代码

导入Lib并使用;

  导入库文件时,可使用package:指令指定该文件的URI:

import 'package:utilities/utilities.dart';
复制代码

生成文档;

  可使用dartdoc工具来为Lib生成API文档。

发布开源库

  若是lib是开源的,能够在Pub网站上共享它。 要发布或更新库,使用pub publish,它会上传您的包并建立或更新其页面。pub网站不只托管您的包,还生成并托管您的包的API参考文档。

注:要发布到Pub站点之外的地方,或者为了防止在任何地方发布,请使用pubspec中定义的publish_to字段。

准备发布

  发布Lib时,遵循pubspec格式和包结构很重要。其中一些是必需的,以便其余人可以使用你的包。 其余建议是帮助用户更容易理解和使用您的包。

  在这两种状况下,pub都会尝试经过指出哪些更改有助于使你的程序包在Dart生态系统中发挥更好的做用。 上传包时还有一些其余要求:

  • 你必须包含包含开源许可证的许可证文件(名为LICENSE,COPYING或某些变体)。推荐使用Dart自己使用的BSD许可证,还必须拥有合法权利从新分发上传的任何内容。
  • gzip压缩后,您的包必须小于10MB。若是它太大,请考虑将其拆分为多个包,或减小包含的资源或示例的数量。
  • 你的包应该只有托管依赖项。Git依赖是容许的,但强烈反对;并不是全部使用Dart的人都安装了Git,而且Git依赖项不支持版本解析以及托管依赖项。

请注意,与您的Google账户关联的电子邮件地址会与上传的任何软件包一块儿显示在Pub网站上。

几个重要文件

  Pub使用几个文件的内容在/packages/<your_package>中为您的包建立一个页面。 如下是影响包的页面外观的文件:

  • 自述文件:自述文件(README,README.md,README.mdown,README.markdown)是软件包页面中的主要内容。
  • CHANGELOG:你的软件包的CHANGELOG(CHANGELOG,CHANGELOG.md,CHANGELOG.mdown,CHANGELOG.markdown)若是找到,也会出如今软件包页面的标签中,以便开发人员能够直接从Pub网站上阅读。
  • pubspec:你的软件包的pubspec.yaml文件用于在软件包页面的右侧填写有关软件包的详细信息,如描述,做者等。

发布文件

  第一次发布时可使用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
复制代码
相关文章
相关标签/搜索