Как использовать форк пакета метеора, когда исходный пакет является зависимостью
контекст
Я использую пакет aldeed:autoform и нашел для него пару ошибок и подал PR ( https://github.com/aldeed/meteor-autoform).
Aldeed, являющийся единственным сопровождающим множества популярных пакетов, оказывается узким местом для объединения PR и решения проблем. Мое решение состояло в том, чтобы раскошелиться на его проект и опубликовать мой форк по атмосфере.
Наивно, я только что удалил его пакет meteor remove aldeed:autoform
и попытался добавить мой: meteor add metakungfu:autoform
Когда я загружаю свое приложение, я получаю следующую ошибку:
Package['aldeed:autoform']
возвращает ожидаемый объект, даже если я удалил пакет.
Для полноты картины я использую кучу других пакетов, которые зависят от aldeed:autoform, и я предполагаю, что это причина, по которой пакет aldeed:autoform все еще присутствует.
Вопросы:
Как правильно использовать ответвление пакета, если этот пакет является зависимостью от других пакетов?
Это правильный способ решить мою проблему?
3 ответа
В итоге я использовал mgp для управления пакетами. Чтобы решить мою проблему, мне пришлось сделать две вещи:
Сначала добавьте git-packages.json
в корне вашего проекта, который выглядит так:
➜ cat git-packages.json
{
"aldeed:autoform": {
"git": "git@github.com:gregory/meteor-autoform.git",
"branch": "dev"
}
}
Это будет работать локально, но если вы развернете на heroku, buildpack-пакет должен будет установить mgp и установить зависимости.
Я просто открыл пиар, чтобы это исправить
Разветвите все зависимости и заставьте их указывать на ваш ответвление.
Вместо публикации своей собственной версии aldeed:autoform
на Атмосферу, вы должны использовать его как локальный пакет, сохраняя его имя без изменений. Метеор будет сначала искать ваши местные пакеты, прежде чем пытаться получить из атмосферы.
Таким образом, все остальные ваши пакеты будут использовать вашу локальную версию.
Для этого см.: Почему пакет medeed/meteor-tabular в Meteor зависает при обработке и никогда не выдает результат?