Запретить Composer от установки второй копии CakePHP/2

Я хотел бы использовать Composer для установки некоторых библиотек внутри моего app каталог но src/app/composer.json перечисляет CakePHP как не-dev зависимость:

"require": {
    "php": ">=5.3.0",
    "ext-mcrypt": "*",
    "cakephp/cakephp": "~2.9"
},
"require-dev": {
    "phpunit/phpunit": "3.7.*"
},

Это приводит к установке второй копии CakePHP в мой app/Vendor каталог. Это раздражает, потому что оно использует дисковое пространство и встает на путь интеллектуального кода IDE.

Какой лучший способ предотвратить это? Безопасно ли вообще удалять зависимость?

1 ответ

Решение

Причина, по которой CakePHP указан в качестве основной зависимости, заключается в том, что на самом деле можно установить сам CakePHP/2.x. Это объясняется в главе " Расширенная установка".

Помимо использования Composer, для начальной настройки требуются некоторые дополнительные ручные действия, которые не требуются в установках tarball, но ничего, что четко не задокументировано. Вы также должны использовать cake bake Оболочка для создания ваших исходных файлов приложения (вместо того, чтобы просто вводить уже существующие файлы), что создает структуру, отличную от той, к которой вы можете привыкнуть:

my_project/  My stuff comes here
    <my app files>
    Vendor/
        cakephp/
            cakephp/

... вместо:

my_project/
   <cakephp files>
   app/  My stuff used to be here 

Если вы выбираете традиционную (иначе говоря, ручную) установку, вы больше не встречаете зависимость, поэтому вам решать, что делать:

  • Оставьте все как есть и пометьте лишнюю копию как проигнорированную в вашем редакторе /IDE
  • Удалите зависимость из app/composer.json и молитесь, чтобы библиотека вам не требовалась.
Другие вопросы по тегам