Space
The intelligent code collaboration platform
Space and SpaceCode will be discontinued on June 1, 2025. Learn more → →
如何在 Space 中使用 Dart 和 Flutter 软件包仓库

您担心代码的安全性吗? 不想再为 Dart 软件包依赖外部源代码?
JetBrains Space 为私有 Dart 软件包存储提供了全面解决方案。 使用它,您可以安全地存储和管理代码和软件包依赖项,并让团队在组织内快速访问和共享软件包。
无论是处理移动、控制台还是 Flutter 项目,Space Packages 都能让您轻松存储和共享 Dart 软件包。
阅读本文,了解如何将 Space Packages 用于 Dart 或 Flutter 项目。
为什么要为 Dart 使用 Space Packages?
虽然目前全球只有 9% 的开发者使用 Dart,但在 2022 开发者生态系统现状调查中,46% 的受访者证实,基于 Dart 构建的跨平台移动框架 Flutter 非常受欢迎。
在 Space 中,我们明白支持流行软件包类型的重要性,并且已经向支持的软件包列表添加了 Dart,以及常用类型,包括容器、Maven、NuGet、Python、Composer、npm,甚至任意文件。
在完整开发平台中使用 Space Packages 的好处:
- 易于设置:您可以创建私有仓库,或从 GitHub、GitLab 或 Artifactory 轻松迁移。
- 将软件包集成到管道:使用一致的界面、快速导航和统一的权限系统,将软件包存储在源代码和 Automation 构建旁边。
- 更稳定的构建:受益于不可变版本、易于配置的 Gradle 构建缓存和缓存不可靠的仓库。
- 任何负载的软件包共享:Space Packages 适用于小型团队和大型企业。 即使工作量很大,也能享受合理的工作时间。
存储内部 Dart 软件包依赖项
您可以使用 Space 中的私有 Dart 仓库安全存储和共享自定义软件包,使代码仅供团队成员访问。
- 在 Space 的 Dart 项目中,创建私有 Dart 仓库。 阅读本指南了解详情。

- 设置 Space Automation 作业,以将软件包发布到私有仓库。 在这篇指南中获得更多详细信息。
job("Build, run tests, and publish") { container(displayName = "Run script", image = "dart:stable") { shellScript { content = """ dart compile exe .bindart_package.dart dart test .testdart_package_test.dart dart pub token add https://dart.pkg.jetbrains.space/acme-corp/p/my-project/my-dart-repo --env-var JB_SPACE_CLIENT_TOKEN dart pub publish -f """ } } }
- 您现在可以在 Dart 项目中引用来自这个私有仓库的软件包。

公开分发 Dart 软件包
要公开分发内部存储的软件包,请创建一个额外的公共仓库。 为此,您可以使用另一个 Space 仓库作为发布的目标仓库。
- 创建一个公共 Dart 仓库,并选择 Public access(公开访问)。 这将是我们的目标仓库。

- 现在,需要为新创建的目标仓库创建访问令牌。 将其打开,点击 Get Started(使用入门)。 您将看到一个帮助窗口,其中包含有关如何连接到此仓库的提示。
- 切换到 Publish(发布),点击 Generate write token(生成写入令牌)。 将令牌复制到剪贴板。

- 打开源仓库的 Settings(设置)页面。
- 转到 Remote Repositories(远程仓库)标签页,在这里添加目标仓库。

- 对于 Authentication(身份验证),选择 Token(令牌)并粘贴第 3 步中的令牌。

- 需要将软件包发布到目标公共仓库时,转到源仓库,选择软件包,然后点击 Publish to remote repository(发布到远程仓库)。

- 就是这些! 软件包现在已位于公共仓库中。
发布 Flutter 软件包
同样的使用场景也适用于 Flutter 软件包 – 它们可以和普通的 Dart 软件包存放在同一个 Dart 仓库中。
这里唯一值得注意的是,Flutter 没有官方的 Docker 镜像。 您可以在 Automation 构建中使用非官方镜像,也可以创建自己的自定义镜像。 例如,作业可能如下所示:
job("Build, run tests, and publish") { container(displayName = "Run script", image = "cirrusci/flutter") { shellScript { content = """ flutter test flutter pub token add https://packages.jetbrains.team/dart/p/sasmp/my-dart-repo --env-var JB_SPACE_CLIENT_TOKEN flutter pub publish -f """ } } }
Space Packages 仓库中已发布的 Flutter 软件包将如下所示:

镜像 pub.dev
如果您使用 Space Automation 构建 Dart 项目,那么可以创建 pub.dev 的本地镜像。 它是 Space Packages 中的一种仓库类型,可以用作拉通缓存。 当某个软件包收到请求时,Space 首先在本地查找软件包,如果不可用,则从远程仓库下载。 了解详情。

我们希望这能让您清楚地了解 Space Packages 如何帮助您更安全、更高效地管理和分发 Dart 软件包。 无论您是小型团队还是大型企业的一员,Space Packages 都可以简化您的软件包管理工作流并实现更快的协作。
我们期待您对 Space Dart 仓库和 Space Packages 的反馈,欢迎在下方评论区分享您的想法。
本博文英文原作者: