Composer не будет устанавливать пакеты "require-dev"
Я пытаюсь сделать некоторые разработки с Laravel, и по какой-то причине я не могу установить его для установки каких-либо пакетов, перечисленных в разделе require-dev
в любом из файлов зависимостей composer.json
. AFAIK, зависимости от разработчиков должны быть установлены по умолчанию. Я пробовал его с и без флага --dev
на composer install
. Я также попытался удалить содержимое vendors/
и удалить composer.lock
и ~/.composer
и переустановить все зависимости с нуля, но все равно не повезло. Я также пробовал различные итерации команды composer update
.
Например, в 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
Ответы
Ответ 1
Composer только устанавливает пакеты, перечисленные как "require-dev" вашего основного файла composer.json, и если этим пакетам требуется что-то другое, тогда устанавливаются только их пакеты "require", но не их "require-dev" ".
На самом деле это хорошо. Если вы хотите разработать пакет, вы клонируете свой репозиторий, установите все необходимое для разработки и готовы внести свой вклад. Но если вам нужен пакет для вашего собственного программного обеспечения, это нецелесообразно для разработки этого конкретного пакета - это вариант использования собственного программного обеспечения.
Таким образом, tl; dr: Composer устанавливает только требования к компоновке composer.json, а не любые зависимости.
Ответ 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
И в вашем проекте будут установлены пакеты require-dev "vendor/laravel/framework/composer.json".