РЕДАКТИРОВАТЬ
Я думаю, что я неправильно понял, теперь это мое новое понимание, пожалуйста, поправьте меня, если я ошибаюсь:
Я должен указать URL-адреса пакетов, которые я хочу зеркалировать, например, doctrine git repo, yaml git repo … Это означало бы, что мне нужно добавить один раз все пакеты, используемые в моем composer.json моего проекта, в соответствии с json (около 20 пакетов / требований). Теперь я могу добавить свой личный репозиторий удовлетворительно в файл composer.json моего проекта, и при запуске «обновления композера» он сначала будет искать в пакетах с зеркальным отображением соответствия требуемый пакет. Я правильно понял?
Ситуация:
Я пытаюсь использовать Satis для частного хранилища композиторов. У меня есть частный проект на GitHub для моего сайта. В проекте я использую composer и, следовательно, у меня есть composer.json в корне проекта. Это выглядит следующим образом:
{
"name": "Peter North",
"license": "proprietary",
"type": "project",
"autoload": {
"psr-4": {
"": "src/"}
},
"require": {
"php": ">=5.3.9",
"symfony/http-foundation": "dev-master"}
...
}
Теперь я хотел бы использовать мой частный репозиторий удовлетворительно url: packages.ait.company, работающий на Apache и доступный до сих пор. Удовлетворение выглядит следующим образом:
{
"name": "AIT Company",
"homepage": "packages.ait.com",
"repositories": [
{
"type": "vcs",
"url": "[email protected]:north/ait.git" // this is the url of my private github project
}
],
"require-all": true,
"require-dependencies": true,
"archive": {
"directory": "dist",
"format": "tar",
"skip-dev": true
}
}
Я думаю, что я не очень хорошо понял, как структурировать файл happ.json и что он должен содержать, потому что, как я пытаюсь, он не загружает указанные мной пакеты «php» и «symfony / http-foundation» в файле composer.json — хотя он и загружает правильный файл проекта composer.json в / js / каталог / include.
Как должен выглядеть файл relax.json, когда я хочу прочитать composer.json моего проекта из github и создать частное хранилище удовлетворительных запросов «Требуются записи»?
В моем скрипте обновления Satis это двухэтапный процесс для создания локальных копий как из внешних пакетов, так и из внутренних, частных репозиториев.
Первый шаг загружает только метаданные внешних зависимостей и помещает их в промежуточный удовлетворительный репозиторий. Конфигурация явно не «требует все», но содержит явные операторы всех пакетов, которые используются (и некоторых, которые могли использоваться или использовались в прошлом) с подстановочным знаком открытой версии, т.е. "symfony/console":">=2.4"
(нет тильды или карета — я хочу получать обновления основных версий здесь). Добавление require-dependencies:true
сканирует все зависимости всех необходимых пакетов и добавляет их в коллекцию метаданных.
Результат сохраняется в каталоге «внешний».
Второй шаг — проверка всех пакетов из внутренних «репозиториев» и создание из них архивов. Это, очевидно, список всех частных репозиториев, но хитрость такова: вы также можете добавить к satis.json
репозиторий типа «composer» — и здесь я добавляю внешний репозиторий с метаданными из внешних пакетов. Добавление здесь добавляет все версии внешних пакетов в список версий, для которых необходимо создать ZIP-файлы.
Первый запуск занимает много времени из-за всех пакетов, которые необходимо загрузить (и создать локально из частных репозиториев). Запуск его после этого — просто добавочное обновление только тех новых версий, которые не были созданы ранее.
Ключ заключается в том, чтобы настроить сбор внешних пакетов без ZIP и с явными диапазонами версий («*», поскольку версия будет работать, но использовать ее, только если вам действительно нужны все версии) в одном файле Satis, а затем добавить полученный репозиторий во вторую конфигурацию Satis. , Вы не можете объединить две операции (только создание ZIP выбранных внешних зависимостей вместе с ZIP-файлами ВСЕХ внутренних репозиториев) в один прогон Satis.
Еще один совет: вы, вероятно, хотите создавать только локальные копии ваших внешних зависимостей, чтобы избежать сбоя в работе Github при развертывании в рабочей среде (или в процессе разработки, и вам необходимо это обновление). Чтобы каждая использованная зависимость была в моем Сатисе, я добавил оба хранилища Сатис в каждый composer.json
, так же как "packagist":false
, чтобы отключить любой прямой контакт с Packagist. Тогда вы не можете просто добавить случайный пакет, он должен быть сначала в вашем локальном репозитории Satis.
Других решений пока нет …