从Dart 2.15开始,您可以创建自己的包存储库。www.example.comhttps://dart.dev/tools/pub/custom-package-repositories#publishing-to-a-custom-package-repository
我们需要镜像www.example.com软件包的子集(出于公司安全的原因)。但是没有关于如何镜像软件包的信息。我应该派生一个GitHub源代码并手动发布每个允许的软件包版本吗?这看起来非常烦人和耗时。那么传递依赖关系呢?我应该上传所有的吗?pub.dev packages (for corporative security reasons). But there's no information, how to do a package mirroring. Should I fork a GitHub source and publish every allowed package versions manually? It looks exremely annoying and time-consuming. And what about transitive dependencies? Should I upload all of them too?
我还找到了这篇文章:https://medium.com/dartlang/hosting-a-private-dart-package-repository-774c3c51dff9,它也描述了www.example.com镜像场景,但没有解释如何执行。pub.dev mirroring scenario too, but doesn't explains how to do it.
1条答案
按热度按时间4ngedf3f1#
我不知道这是否是您正在寻找的答案,但我相信通过一些实验,可以使用dart包存储库规范中描述的API编写脚本:
https://github.com/dart-lang/pub/blob/master/doc/repository-spec-v2.md
例如,您可以查询软件包的所有版本,如下所示:
然后,您可以将
archive_url
用于您想要下载包的版本,可能会迭代依赖项并下载它们。然后,您需要将下载的每个软件包版本上传到您的私有存储库中。这可以通过首先在新软件包提交URL上执行GET来完成:
然后POST由
fields
描述的表单以及您先前下载到响应中提供的url的归档文件。注意,当我在unpub上测试这个时,fields
Map是空的,但是根据您的私有repo实现,这可能是不同的。我们可以想象这样一个脚本,它从要镜像的包列表开始,下载它们,可能还下载它们的依赖项,然后将它们全部上载到私有服务器。
对于可传递的依赖项,这可能取决于您的安全需求。如果您使用
PUB_HOSTED_URL=https://my-private-repo.tld
,那么运行flutter pub get
将从您的私有存储库中下载任何它能找到的依赖项,以及从pub.dev中下载任何其他依赖项。如果这是不可接受的,那么您可能需要将它们全部上传。