Как потребовать вилку с композитором
Вот мой композитор.json, я хочу использовать вилку Nodge проекта lessphp на Github
"repositories": [{
"type": "package",
"package": {
"version": "dev-master",
"name": "nodge/lessphp",
"source": {
"url": "https://github.com/Nodge/lessphp.git",
"type": "git",
"reference": "master"
},
"autoload": {
"classmap": ["lessc.inc.php"]
}
}
}],
"require": {
"php": ">=5.3.3",
"nodge/lessphp": "dev-master"
},
Но у меня есть эта ошибка, когда я делаю обновление:
Nodge/lessphp dev-master -> соответствующий пакет не найден.
Я не знаю, как правильно требовать эту вилку...
Есть какие-нибудь предложения?
6 answers
Наиболее распространенный (и более простой) способ сделать это - использовать репозиторий VCS.
Все, что вам нужно сделать, это добавить свою вилку в качестве репозитория и обновить ограничение версии, чтобы указать на вашу пользовательскую ветвь. Ваше пользовательское имя ветви должно иметь префикс с
dev-
.
Пример, предполагающий, что вы исправили монолог, чтобы исправить ошибку в ветке исправления ошибок:
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/igorw/monolog"
}
],
"require": {
"monolog/monolog": "dev-bugfix"
}
}
Обратите внимание, что вы не изменяете инструкцию require, кроме как указываете свою ветвь исправления ошибок. Вы все еще ссылаюсь на вышестоящий пакет (monolog/monolog
), не ваша личная вилка (igorw/monolog
). Вы можете прочитать подробности в документах
Использование VCS работает:
"name": "test/test",
"repositories": [{
"type": "vcs",
"url": "http://github.com/Nodge/lessphp"
}],
"require": {
"leafo/lessphp": "dev-master"
},
Но если мне потребуется модуль с этим composer.json
, он не будет работать. Он устанавливает исходный проект, а не вилку.
Пример
"name": "example/example",
"require": {
"test/test": "dev-master"
},
Я должен еще раз упомянуть хранилище. Это нормально?
Если вы не можете заставить ответ @Neilime работать на вас, убедитесь, что ваша вилка использует другую ветвь.
Например, внесите свои изменения в ветвь на вашей ветке под названием my-bugfix
, не добавляйте префикс dev-
в название вашей ветви, но в файле composer.json вы должны его добавить. Ваш файл композитора будет выглядеть следующим образом:
"repositories":
[
{
"type": "vcs",
"url": "http://github.com/yourname/packageName"
}
],
"require": {
"owner/packageName": "dev-my-bugfix"
},
В соответствии с документацией композитора
http://getcomposer.org/doc/05-repositories.md#vcs , достаточно
указать исходный репозиторий (не вилку) в require
("nodge/lessphp" в вашем случае). Затем Composer установит ВАШУ вилку (посмотрите код у поставщиков)
Обычно я добавляю узел "dist" в определение пакета. У меня никогда не было проблем с его использованием таким образом.
Однако я не могу вспомнить, откуда я взял этот трюк, для каких-либо дальнейших объяснений.
{
"repositories": [
{
"type": "package",
"package": {
"version": "dev-master",
"name": "nodge/lessphp",
"source": {
"url": "https://github.com/Nodge/lessphp.git",
"type": "git",
"reference": "master"
},
"autoload": {
"classmap": ["lessc.inc.php"]
},
"dist": {
"url": "https://github.com/Nodge/lessphp/archive/master.zip",
"type": "zip"
}
}
}
],
"require": {
"nodge/lessphp": "*"
}
}
Я перепробовал много вариантов, но после того, как я получил этот пост, я увидел свет, и это просто сработало идеально.
Вот что вам нужно сделать:
1-Разветвление репозитория
2 - Создайте ветвь и внесите необходимые изменения.
3 - Добавьте метку репозитория в файл composer.json
"repositories": [
{
"type": "vcs",
"url": "https://github.com/user/yourforkname"
}
]
4 - В командной строке внутри вашего проекта требуется ваша вилка следующим образом:
composer require vendor/packagename:dev-branchname
И Вуаля!!
У вас работает версия вилки