Я начинаю использовать композитор, я так мало о нем знаю и имею небольшой опыт разработки веб-приложений.
Я просто просматриваю Nettuts + Tutorial , поэтому у меня есть основной вопрос о композиторе.
{
"require": {
"laravel/framework": "4.0.*",
"way/generators": "dev-master",
"twitter/bootstrap": "dev-master",
"conarwelsh/mustache-l4": "dev-master"
},
"require-dev": {
"phpunit/phpunit": "3.7.*",
"mockery/mockery": "0.7.*"
},
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
]
},
"scripts": {
"post-update-cmd": "php artisan optimize"
},
"minimum-stability": "dev"
}
- Все, что появляется
"require-dev"
частично, будет загружено и установлено только с помощьюcomposer install --dev
? - Я прочитал кое-что из документации композитора, но все еще не понимаю, по какой причине мы расстались
"require-dev"
? Это потому, что мы хотим получить конкретную версию пакета, а не всегда получать последнюю стабильную версию?
composer-php
Ремесленник
источник
источник
Ответы:
Различная среда
Обычно программное обеспечение работает в разных средах:
development
testing
staging
production
Различные зависимости в разных средах
Зависимости, которые объявлены в
require
разделеcomposer.json
, обычно являются зависимостями, которые необходимы для запуска приложения или пакета вstaging
production
среды, тогда как зависимости, объявленные в
require-dev
разделе, обычно являются зависимостями, которые требуются вdeveloping
testing
среды.
Например, в дополнение к пакетам, используемым для фактического запуска приложения, для разработки программного обеспечения могут потребоваться пакеты, такие как:
friendsofphp/php-cs-fixer
(для обнаружения и исправления проблем со стилем кодирования)squizlabs/php_codesniffer
(для обнаружения и исправления проблем со стилем кодирования)phpunit/phpunit
(управлять разработкой с помощью тестов)Развертывание
Теперь, в
development
иtesting
условиях, вы, как правило , работатьустановить оба
production
иdevelopment
зависимости.Тем не менее, в
staging
иproduction
средах, необходимо только установить зависимость , которые необходимы для запуска приложения, а также в рамках процесса развертывания, вы, как правило , работатьустанавливать только
production
зависимости.Семантика
Другими словами, разделы
require
require-dev
укажите,
composer
какие пакеты должны быть установлены при запускеили
Это все.
Примечание. Зависимости от разработки пакетов, от которых зависит ваше приложение или пакет, никогда не будут установлены.
Для справки см:
источник
vendor
папку по FTP?—no-dev
. Кроме того, FTP, вероятно, будет довольно медленным.composer.json
- см., Например, github.com/FriendsOfPHP/PHP-CS-Fixer/tree/2.16/dev-tools .Согласно руководству композитора :
Таким образом, запуск
composer install
также загрузит зависимости разработки.Причина на самом деле довольно проста. При внесении вклада в конкретную библиотеку вы можете захотеть запустить тестовые наборы или другие инструменты разработки (например, symfony). Но если вы установите эту библиотеку в проект, эти зависимости разработки могут не потребоваться: не для каждого проекта требуется средство запуска тестов.
источник
С сайта композитора (достаточно понятно)
Используя require-dev в Composer, вы можете объявить зависимости, необходимые для разработки / тестирования проекта, но не нужные в производстве. Когда вы загружаете проект на свой производственный сервер (используя git),
require-dev
часть будет проигнорирована.Также проверьте этот ответ, опубликованный автором, и этот пост .
источник
требуется раздел Этот раздел содержит пакеты / зависимости, которые лучше всего подходят для установки / требования в производственной среде.
Раздел require-dev: этот раздел содержит пакеты / зависимости, которые может использовать разработчик для тестирования своего кода (или для экспериментов на своем локальном компьютере, и она не хочет, чтобы эти пакеты были установлены в производственной среде).
источник
Общее правило состоит в том, что вам нужны пакеты из раздела require-dev только в средах разработки (dev), например в локальной среде.
Пакеты в разделе require-dev - это пакеты, которые помогают вам отлаживать приложение, запускать тесты и т. Д.
В промежуточной и производственной среде вам, вероятно, нужны только пакеты из раздела require .
Но в любом случае вы можете запустить composer install --no-dev и composer update --no-dev в любой среде, команда установит только пакеты из требуемого раздела, а не из require-dev , но, вероятно, вы захотите запустить это только на стадии подготовки и производства среды не на локальных.
Теоретически вы можете поместить все пакеты в требуемый раздел, и ничего не произойдет, но вы не хотите разрабатывать пакеты в производственной среде по следующим причинам:
Вот несколько хороших кандидатов на роль require-dev :
вы можете увидеть, что делают указанные выше пакеты, и вы поймете, почему они вам не нужны в производственной среде.
См. Подробнее здесь: https://getcomposer.org/doc/04-schema.md
источник
Обратите внимание на require-dev (только для root) !
это означает, что раздел require-dev действителен только в том случае, если ваш пакет является корнем всего проекта. Т.е. если ты бежишь
composer update
из своей папки пакета.Если вы разрабатываете плагин для какого-то основного проекта, у которого есть собственный composer.json, тогда ваш раздел require-dev будет полностью проигнорирован! Если вам нужны зависимости от разработки, вы должны переместить файл require-dev в composer.json в основном проекте.
источник