2014-01-16 3 views
11

Я пытаюсь сделать некоторые разработки с Laravel, и по какой-то причине я не могу установить его для установки каких-либо пакетов, перечисленных в разделе require-dev, в любой из зависимых 'composer.json. AFAIK, зависимости от разработчиков должны быть установлены по умолчанию. Я пробовал его с и без флага --dev на composer install. Я также попытался удалить содержимое vendors/ и удалить composer.lock и ~/.composer и переустановить все зависимости с нуля, но все равно не повезло. Я также пробовал различные итерации команды composer update.Composer не будет устанавливать пакеты «require-dev»

Например, в vendor/laravel/framework/composer.json, он перечисляет эти:

"require-dev": { 
    "aws/aws-sdk-php": "2.4.*", 
    "iron-io/iron_mq": "1.4.*", 
    "pda/pheanstalk": "2.1.*", 
    "mockery/mockery": "0.8.0", 
    "phpunit/phpunit": "3.7.*" 
}, 

Ни один из них не становятся установлены. Любые идеи, что мне не хватает? Вот мой главный файл composer.json, FWIW.

{ 
"name": "laravel/laravel", 
"description": "The Laravel Framework.", 
"keywords": ["framework", "laravel"], 
"license": "MIT", 
"require": { 
    "laravel/framework": "4.0.*", 
    "rncryptor/rncryptor-php": "1.*" 
}, 
"autoload": { 
    "classmap": [ 
     "app/commands", 
     "app/controllers", 
     "app/models", 
     "app/libraries", 
     "app/database/migrations", 
     "app/database/seeds", 
     "app/tests/TestCase.php" 
    ] 
}, 
"scripts": { 
    "post-install-cmd": [ 
     "php artisan optimize" 
    ], 
    "pre-update-cmd": [ 
     "php artisan clear-compiled" 
    ], 
    "post-update-cmd": [ 
     "php artisan optimize" 
    ], 
    "post-create-project-cmd": [ 
     "php artisan key:generate" 
    ] 
}, 
"config": { 
    "preferred-install": "dist" 
}, 
"minimum-stability": "dev" 
} 

Я побежал composer self-update, так что это должна быть последняя версия. Запуск composer --version показывает это:

Composer version b20021cc6aa113069e4223b78d0074a1fc7dd4e8 2014-01-14 16:22:09 
+0

Вы пробовали флаг '--require-dev', чтобы принудительно установить dev? – Cristian

+0

Я попробовал 'comper install --require-dev' и' composer update --require-dev', но оба дают мне ошибку, говоря, что этот флаг не существует. Я пробовал с '--dev', но не повезло. – curtisdf

ответ

19

Composer только когда-либо устанавливает пакеты, перечисленные в качестве «требуют-DEV» вашего главного файла composer.json, и если эти пакеты действительно нужно что-то еще, то только их «требуют» пакеты но не их пакеты «require-dev».

Это на самом деле хорошо. Если вы хотите разработать пакет, вы клонируете свой репозиторий, установите все необходимое для разработки и готовы внести свой вклад. Но если вам нужен пакет для вашего собственного программного обеспечения, это нецелесообразно для разработки этого конкретного пакета - это вариант использования собственного программного обеспечения.

Так что tl; dr: Composer устанавливает только требования к компоновке composer.json, а не любые зависимости.

+1

Вижу. Наверное, я просто не понял, что говорится в документации, когда это означало «root». – curtisdf

2

Существует решение для установки в проект проекта пакетов требуемых решений поставщика.

https://github.com/wikimedia/composer-merge-plugin

Добавьте это в ваш composer.json вашего проекта

{ 
    "require": { 
     "wikimedia/composer-merge-plugin": "dev-master" 
    }, 
    "extra": { 
     "merge-plugin": { 
      "include": [ 
       "vendor/laravel/framework/composer.json" 
      ] 
      "recurse": true, 
      "replace": false, 
      "ignore-duplicates": false, 
      "merge-dev": true, 
      "merge-extra": false, 
      "merge-extra-deep": false, 
      "merge-scripts": false 
     } 
    } 
} 

Важно иметь "merge-dev": true, запустить

composer update 

И требуют-DEV пакеты «поставщика /laravel/framework/composer.json "будет установлен в вашем проекте.

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