当原始包是依赖项时如何使用流星包的分支

how to use a fork of a meteor package when the original package is a dependency

上下文

我正在使用 aldeed:autoform 包并发现了一些错误并为它提交了 PR(https://github.com/aldeed/meteor-autoform)。

Aldeed 是许多流行软件包的唯一维护者,最终成为合并 PR 和跟进问题的瓶颈。 我的解决方案是分叉他的项目并在 atmosphere 上发布我的分叉。

天真地,我只是删除了他的包 meteor remove aldeed:autoform 并尝试添加我的包:meteor add metakungfu:autoform

当我加载我的应用程序时,出现以下错误:

Package['aldeed:autoform'] returns 预期的对象,即使我删除了包。

为了完整起见,我确实使用了一堆依赖于 aldeed:autoform 的其他包,我猜这就是 aldeed:autoform 包仍然存在的原因。

问题:

分叉所有依赖项并使它们指向您的分叉。

与其将您自己的 aldeed:autoform 版本发布到 Atmosphere,不如将其用作本地包,并保持其名称不变。在尝试从 Atmosphere 获取之前,Meteor 将首先查找您的本地包。

这样,所有依赖它的其他包都将使用您的本地版本。

要做到这一点,请参阅:Why does Meteor's aldeed/meteor-tabular package get stuck processing and never render a result?

参考:Meteor Guide > Build > Writing Atmosphere Packages > Overriding packages with a local version

我最终使用 mgp 来管理包。 为了解决我的问题,我不得不做两件事:

首先,在项目的根目录中添加一个 git-packages.json,如下所示:

➜ cat git-packages.json
{
  "aldeed:autoform": {
    "git": "git@github.com:gregory/meteor-autoform.git",
    "branch": "dev"
  }
}

这将在本地工作,但如果您部署到 heroku,buildpack 将需要安装 mgp 并安装依赖项。

我只是opened a PR to fix this