Dart-包管理

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/<package-name>.dart,该文件导出所有公共API。 这使用户可以通过导入单个文件来获得库的所有功能。

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345