如何防止使用dart软件包的gitub repo扩散?

问题描述:

假设我想创建一个包的收集,比如烹饪。 我将有一个核心的包叫做烹饪然后我想多烘焙包:如何防止使用dart软件包的gitub repo扩散?

  • 烹饪,墨西哥
  • 烹饪印
  • 烹饪泰

每个人都会用做饭。未来可能会创建更常见的软件包。在github中设置这个 结构的方法是什么,这样你就不必为每个结构创建一个 单独的回购,但仍然允许客户端项目只需将它们所需的包装拉出 。

软件包可以引用github包中的路径吗?

从他们展示如何引用混帐酒吧依赖性页:

dependencies: 
    cooking: 
    git: 
     url: git://github.com/munificent/cooking.git 
     ref: some-branch 

但最好我想:

dependencies: 
    cooking-indian: 
    git: 
     url: git://github.com/munificent/cooking.git 
     ref: some-branch 
     # path relative to cooking.git that has pubspec.yaml 
     path: cooking-indian 

有没有办法有有N包仅在一个GitHub库一些子集可以通过pub选择?

您始终可以拥有一个顶级git存储库,其中包含单独发布的子文件夹中的所有包。 Pub没有要求每个包都是回购 - 只要单个包遵守pub package layout format

如果您正在使用私人回购,您可能需要setup a private pub host而不是依赖github进行提取。

但是,pub目前不支持直接从git repos的子树中获取数据。如果你想投入努力来实现这个功能,你可以通过利用git的sparse checkout功能来实现。

+0

如果您希望代码可以从pub发布,但仍然希望开发通过git获取特定版本,仍然会出现扩散。在git中放入多个包意味着您不能使用pubspec git选择器功能,因为pub需要该包作为回购的根。 – user1338952

+0

这个请求有一个[未解决的问题](https://github.com/dart-lang/pub/issues/1305),但今天没有人正在处理它。 我们在[build repo](https://github.com/dart-lang/build)中使用了这种模式,并且它一直运行良好,虽然在版本发布到pub之前还有一些关于travis测试的棘手部分。 总是可以使用发布到pub的特定版本,git依赖不是锁定到特定版本的唯一方法。 – Nate