Композитор, игнорирующий файл компоновщика zip dependecies 'composer.json

Я использую Composer для проекта, который должен обрабатывать некоторые зависимости, но у меня очень странная проблема. Композитор игнорирует файл composer.json, содержащийся в дочерних пакетах.

Мой проект должен получить некоторые пользовательские почтовые пакеты, в этих пакетах файл composer.json определяет другие требования. Репозитории этих требований объявлены в корневом файле composer.json, так как Composer can not рекурсивно извлекает репозитории.

Дело в том, что после того, как мой zip-пакет загружен, распакован и помещен в каталог поставщика, композитор полностью игнорирует свой composer.json, где определены другие требования …

Почтовый архив выглядит примерно так:

  • / dir1
  • / dir2
  • file1
  • file2
  • composer.json

Чтобы дать вам представление, вот как выглядит мой root composer.json:

{ "name": "myproject/project", "type": "library", "repositories": [ { "packagist" : false }, { "type": "package", "package": { "name" : "giulianobundles/mybundle", "version" : "1", "dist": { "url": "http://url/to/zip/file", "type": "zip" } } }, { "type": "package", "package": { "name" : "giulianobundles/mybundlerequirement", "version" : "1", "dist": { "url": "http://url/to/zip/file", "type": "zip" }, } }, ], "require": { "php": ">=5.3.2", "giulianobundles/mybundle": "*" }, "autoload": { "psr-0": { "config": "./" } }, } 

и пакет composer.json пакета выглядит

 { "name": "giulianobundles/mybundle", "type":"library", "require": { "giulianobundles/mybundlerequirement": "1" } } 

Пакет Mybundle успешно устанавливается, но его файл composer.json полностью игнорируется. Есть идеи? Что мне не хватает?

Solutions Collecting From Web of "Композитор, игнорирующий файл компоновщика zip dependecies 'composer.json"

Действительно, Composer не будет рекурсивно смотреть на файлы composer.json в файловой системе . Он должен видеть файлы composer.json в репозитории . Обычно он работает, так как у пакета есть URL-адрес git или svn. Композитор будет извлекать, например, git://<host>/<package>/composer.json непосредственно из репозитория, чтобы выяснить зависимости этого пакета, прежде чем он будет установлен даже для вычисления общих зависимостей.

В вашем случае вы определяете package inline в своем собственном файле composer.json. Это используется вместо файла composer.json в зависимости . Это означает, что Composer принимает "package": { ... } чтобы быть каноническим файлом composer.json для этого пакета, он не будет рассматривать сам код; особенно после его распаковки. Он обрабатывает Zip-файл, как будто у него не было собственного файла composer.json.

Определите зависимости в "package": { ... } или разместите код в системе управления версиями, из которой Composer может извлечь файл composer.json.