Как требовать вилку с композитором
вот мой композитор .json, я хочу использовать Nodge fork проекта 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 → не найден соответствующий пакет.
Я не знаю, как правильно спросить эту вилку...
Любые предложения?
Ответы
Ответ 1
Самый распространенный (и более простой) способ сделать это - использовать репозиторий VCS.
Все, что вам нужно сделать, это добавить свою вилку в качестве репозитория и обновить версии, чтобы указать на вашу настраиваемую ветку. Ваш собственный филиал имя должно иметь префикс dev-
.
Предположим, вы исправили монолог, чтобы исправить ошибку в ветке bugfix:
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/igorw/monolog"
}
],
"require": {
"monolog/monolog": "dev-bugfix"
}
}
Обратите внимание, что вы не изменяете инструкцию require, кроме как указать ветку bugfix. Вы по-прежнему ссылаетесь на восходящий пакет (monolog/monolog
), а не на свою личную вилку (igorw/monolog
). Вы можете прочитать подробности в документах
Ответ 2
Использование 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"
},
Я снова должен упомянуть репозиторий. Это нормально?
Ответ 3
Если вы не можете получить ответ @Neilime для работы за вас, убедитесь, что ваша вилка использует другую ветку.
Например, вставьте свои изменения в ветку на вашей вилке под названием my-bugfix
, не добавляйте префикс dev-
в название вашей ветки, но в вашем composer.json вы должны добавить его. Ваш файл-композитор будет выглядеть так:
"repositories":
[
{
"type": "vcs",
"url": "http://github.com/yourname/packageName"
}
],
"require": {
"owner/packageName": "dev-my-bugfix"
},
Ответ 4
Согласно документации Composer
http://getcomposer.org/doc/05-repositories.md#vcs, этого достаточно, чтобы
укажите исходный репозиторий (а не вилку) в require
( "nodge/lessphp" в вашем случае). Composer затем установит ВАШЕ вилку (посмотрите на код у продавцов)
Ответ 5
Я перепробовал много вариантов, но после того, как я получил этот пост, я увидел свет, и он просто отлично работал.
Это то, что вы должны сделать:
1- Форк репозиторий
2- Создайте ветку и внесите необходимые изменения.
3- Добавьте метку репозитория в ваш composer.json
"repositories": [
{
"type": "vcs",
"url": "https://github.com/user/yourforkname"
}
]
4- В командной строке внутри вашего проекта требуется ваш форк, как это:
composer require vendor/packagename:dev-branchname
И вуаля !!
У вас работает вилка
Ответ 6
Я обычно добавляю определение "dist" node к определению пакета.
У меня никогда не было проблем с этим.
Я не могу вспомнить, откуда у меня этот трюк, для дальнейших объяснений.
{
"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": "*"
}
}
Ответ 7
Итак, это 2019 год, и большинство ответов здесь уже правильные.
Однако, если вы окажетесь в ситуации, когда вам потребуется определенная ветка вашего форка (которую вы создали), сначала попросите композитора перечислить доступные версии/теги.
Это сэкономило мне много времени.
Полный пример с пакетом spatie/laravel-backup
.
Сначала добавьте ключ repositories
в composer.json. С URL вашей вилки
"repositories": [{
"type": "vcs",
"url": "https://github.com/holymp2006/laravel-backup"
}]
Получить доступные версии/теги
composer show "spatie/laravel-backup" --all
Выберите нужную версию из versions
в выводе терминала, затем потребуйте эту версию
composer require spatie/laravel-backup:v5.x-dev
Ответ 8
Итак, я сделал то, что сказал документация, и он работает... так как я могу отбросить любые изменения в github обратно в свою вилку, увидев, что композитор не создал репозиторий git в папке пакета. Действительно ли я начинаю с инициализации репо и снова указываю его на вилку, или у композитора есть какой-то параметр, который мне нужно передать для создания реплики fork в папке поставщика/пакета?
Моя цель - нажать любые изменения, которые я делаю на вилку, затем сделать PR позже, но в папке пакета нет git repo.