2014-11-18 3 views
1

Когда я использую этотGit частное хранилище

{ 
    "type": "package", 
    "package": { 
     "name": "name/vendor", 
     "version": "dev-master", 
     "source": { 
      "url": "[email protected]:name/vendor.git", 
      "type": "git", 
      "reference": "master" 
     } 
    } 
} 

мой файл autoload_psr4.php не генерируется с пути я объявляю в моем хранилище, но когда я использую следующую конфигурацию, она работает нормально.

{ 
    "type": "vcs", 
    "url": "[email protected]:name/vendor.git" 
} 

Я хочу знать, почему первая конфигурация создает файлы автозагрузки композитора правильно, но вторая конфигурация не работает.

Изменить 2:

Запуск composer update с первыми результатами конфигурации в следующих автозагрузках:

return array(
    'Symfony\\Bundle\\MonologBundle\\' => array($vendorDir . '/symfony/monolog-bundle'), 
    'Symfony\\Bundle\\AsseticBundle\\' => array($vendorDir . '/symfony/assetic-bundle'), 
    'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'), 
); 

Когда я изменил ко второй конфигурации, AutoLoad имеет:

return array(
    'skowronline\\TaskBundle\\' => array($vendorDir . '/skowronline/taskbundle'), 
    'Symfony\\Bundle\\MonologBundle\\' => array($vendorDir . '/symfony/monolog-bundle'), 
    'Symfony\\Bundle\\AsseticBundle\\' => array($vendorDir . '/symfony/assetic-bundle'), 
    'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'), 
); 

I надеюсь, это более понятно.

Решение: https://getcomposer.org/doc/04-schema.md#repositories

Repository декларации composer.jsons зависимостей игнорируются.

+0

Это не совсем понятно, что вы спрашиваете – amenthes

+0

Где ваш вопрос? Этот «вопрос» не очень ясен, довольно удивителен для пользователя с более чем 1000 репутацией! – cybermonkey

+0

@cybermonkey checkout now –

ответ

1

При использовании первой конфигурации с типом package, вы сообщаете композитор переопределениеcomposer.json в [email protected]:name/vendor.git. Параметр автозагрузки никогда не будет считан. Вы можете исправить это, выполнив:

{ 
    "type": "package", 
    "package": { 
     "name": "name/vendor", 
     "version": "dev-master", 
     "source": { 
      "url": "[email protected]:name/vendor.git", 
      "type": "git", 
      "reference": "master" 
     }, 
     "autoload": { 
      "psr-4": {<your autoload config>} 
     } 
    } 
} 

При использовании второй конфигурации, все, что вы делаете, говоря композитор смотреть в [email protected]:name/vendor.git перед загрузкой из packagist. В этом случае композитор будет читать composer.json из репозитория, включая настройки автозагрузки.

Вторая конфигурация является предпочтительным способом. Когда вы используете объявление package, как в первом примере, вы переопределяете первоначальную конфигурацию автора пакета. Не делайте этого, если у вас нет веских оснований.

+0

спасибо за anwser, не знаю, почему это должно быть использовано –

Смежные вопросы