Contents

Publishing packages

pub软件包管理器不仅仅用于使用其他人的软件包. 它还允许您与世界共享您的软件包. 如果您有一个有用的项目,并且希望其他人可以使用它,请使用pub publish命令.

Publishing is forever

请记住,发布是永远的. 您发布软件包后,用户就可以依赖它了. 一旦他们开始这样做,移除包装将破坏他们的包装. 为避免这种情况,除极少数情况外, pub.dev策略禁止取消发布程序包.

您始终可以上传软件包的新版本,但尚未准备好升级的用户仍可以使用旧版本.

对于不再相关或正在维护的已发布软件包,可以将其标记为已终止 .

Preparing to publish

发布包时,请务必遵循pubspec格式包布局约定 . 为了使其他人能够使用您的包裹,其中一些是必需的. 其他建议则是有助于使用户更容易理解和使用您的软件包的建议. 在这两种情况下,pub都会通过指出哪些更改将有助于使您的程序包与Dart生态系统更好地配合来帮助您. 上载软件包还有一些其他要求:

  • 您必须包括一个包含开放源代码许可证LICENSE文件. 我们建议使用DSD本身使用的BSD许可证 . 您还必须具有合法权利,才能重新分发作为软件包一部分上传的任何内容.

  • gzip压缩后,您的软件包必须小于10 MB. 如果太大,请考虑将其拆分为多个包,或者减少所包含的资源或示例的数量.

  • 您的软件包应仅依赖于托管的依赖关系(来自默认的pub软件包服务器)和SDK依赖关系( sdk: flutter ). 这些限制可确保您的程序包的依赖关系将来不会变得不可用.

  • 您必须拥有一个Google帐户,发布商才能使用该帐户来管理软件包的上传权限. 您的Google帐户可以与Gmail地址或任何其他电子邮件地址相关联.

Important files

Pub使用一些文件的内容在pub.dev/packages/<your_package>为您的软件包创建页面. 以下是影响软件包页面外观的文件:

  • README.md:README.md文件是在你的包的一页精选的主要内容. 文件的内容呈现为Markdown.
  • CHANGELOG.md:包的CHANGELOG.md文件(如果找到)也显示在包页面的选项卡中,以便开发人员可以直接从pub.dev中读取它. 文件的内容呈现为Markdown.
  • pubspec:软件包的pubspec.yaml文件用于在软件包页面的右侧填写有关软件包的详细信息,例如其说明,主页等.

Advantages of using a verified publisher

您可以使用经过验证的发布者(推荐)或独立的Google帐户来发布软件包. 使用经过验证的发布者具有以下优点:

  • 您的包的使用者知道发布者域已经过验证.
  • 您可以避免让pub.dev显示您的个人电子邮件地址. 而是,pub.dev显示将显示发布者域和联系地址.
  • 经过验证的发布者徽章 pub.dev验证发布者徽标 在搜索页面和单个软件包页面上,软件包名称旁边都会显示.

Creating a verified publisher

若要进行验证的发布者,请按照下列步骤操作:

  1. 转到pub.dev.

  2. 使用Google帐户登录到pub.dev.

  3. 在右上角的用户菜单中,选择创建发布者 .

  4. 输入您想要与发布者关联的域名(例如dart.dev ),然后点击创建发布者 .

  5. 在确认对话框中,选择确定 .

  6. 如果出现提示,请完成验证流程,这将打开Google Search Console.

    • 添加DNS记录时,Search Console可能需要几个小时才能反映出更改.
    • 验证流程完成后,请返回步骤4.

Publishing your package

使用pub publish命令首次发布您的软件包,或将其更新为新版本.

Performing a dry run

要测试pub publish工作方式,可以执行试运行:

$ pub publish --dry-run

Pub确保您的软件包遵循pubspec格式软件包布局约定 ,然后将您的软件包上传到pub.dev. Pub还向您显示了打算发布的所有文件. 这是发布名为transmogrify的软件包的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.

Publishing

准备发布软件包时,请删除--dry-run参数:

$ pub publish

将您的软件包成功上传到pub.dev后,任何pub用户都可以下载它或在其项目中依赖它. 例如,如果您刚刚发布了transmogrify软件包的1.0.0版本,那么另一位Dart开发人员可以将其作为依赖项添加到他们的pubspec.yaml

dependencies:
  transmogrify: ^1.0.0

Transferring a package to a verified publisher

要将软件包传输到经过验证的发布者,您必须是该软件包的上载者 ,并且必须是经过验证的发布的管理员.

以下是将软件包转移到经过验证的发布者的方法:

  1. 使用列为软件包上传者的Google帐户登录pub.dev .
  2. Go to the package details page (for example, https://pub.dev/packages/http).
  3. 选择管理标签.
  4. 输入发布者的名称,然后点击转移到发布者 .

What files are published?

软件包中的所有文件都包含在已发布的软件包中,但以下情况除外:

  • Any packages directories.
  • 软件包的lockfile .
  • 如果您不使用Git,则所有隐藏文件(即名称以.开头的文件).
  • 如果您使用的是Git,则.gitignore文件会忽略所有文件.

确保删除任何您不想包含的文件(或将它们添加到.gitignore ). pub publish列出要上传的所有文件,然后再上传您的软件包,因此在完成上传之前请仔细检查列表.

Uploaders

谁发布了软件包的第一个版本,谁就会自动成为第一个也是唯一一个有权上载该软件包的其他版本的人. 要允许或禁止其他人上传版本,请使用pub uploader命令或将软件包转移到经过验证的发布商 .

如果程序包具有经过验证的发布者,则该程序包的pub.dev页面将显示发布者域. 否则,页面将显示软件包的授权上传者的电子邮件地址.

Publishing prereleases

在处理软件包时,请考虑将其作为预发行版发布. 当满足以下任一条件时,预发行版可能会很有用:

  • 您正在积极开发该软件包的下一个主要版本.
  • 您需要Beta测试人员作为该软件包的下一个候选版本.
  • 该程序包取决于Dart或Flutter SDK的不稳定版本.

语义版本控制中所述,要对版本进行预发行,请在该版本后附加一个后缀. 例如,要制作2.0.0版的预发行版,可以使用2.0.0-dev.1版. 稍后,当您发布版本2.0.0 ,它将优先于所有2.0.0-XXX预发行版本.

由于pub倾向于在可用时发布稳定版本,因此预发布软件包的用户可能需要更改其依赖性约束. 例如,如果用户要测试版本2.1的预发行版,则可以指定^2.1.0-dev.1而不是^2.0.0^2.1.0 .

当预发布版本发布到pub.dev时,程序包页面将显示指向预发布版本和稳定版本的链接. 预发行版不会影响分析分数,不会显示在搜索结果中或替换软件包README.md和文档.

Marking packages as discontinued

尽管软件包始终保持发布状态,但向开发人员发送信号表明不再积极维护软件包可能很有用. 为此,您可以将包装标记为已终止 . 已停产的软件包仍可在pub.dev上发布并查看,但具有清晰的DISCONTINUED徽章,并且不会出现在pub.dev搜索结果中.

要将软件包标记为已终止,请使用Google帐户(该软件包的上传者或经过验证的发布者管理员)登录pub.dev. 然后,使用各个软件包的" 管理"标签将其标记为已终止.

Resources

For more information, see the reference pages for the following pub commands:

by  ICOPY.SITE