Подтвердить что ты не робот

PHP Composer: нет режима Dev, который палочки

Когда вы install или update проекта с композитором, вы можете сказать ему пропустить связанные с развитием зависимости (тесты, инструменты сборки и т.д.) с флагом --no-dev

composer.phar update --no-dev

Без этого флага композитор всегда будет загружать дополнительные зависимости.

Есть ли способ (программно или иначе) сказать композитору всегда пропускать зависимости разработки? То есть, есть ли какой-нибудь реальный код, который соответствует псевдокоду

//File: composer.json
//...
"no-dev":"true"
//...
4b9b3361

Ответ 1

Короче: no - not, yet.

Режим установки по умолчанию для компоновщика заключается в установке зависимостей разработки.

Насколько я знаю, существует только опция CLI --no-dev и параметр конфигурации.

Можно определить раздел конфигурации в проекте composer.json проекта, см. https://getcomposer.org/doc/04-schema.md#config

Но быстрый взгляд на исходный код показал, что для этого нет директивы конфигурации. https://github.com/composer/composer/blob/master/src/Composer/Config.php#L22

{
    "config": {
        "no-dev": "true"
    }
}

+1 для этой идеи. Это может быть полезным дополнением к классу Config.

Ответ 2

Это действительно раздражало, поэтому я наконец написал простой скрипт bash, который спрашивает о среде и запускает правильную команду:

#! /bin/bash

read -p "Which environment use to deploy: (P)roduction (T)est (D)ev? (p/t/d): " -n 1 -r
echo

if [[ $REPLY =~ ^[^PpTtDd]$ ]]; then
    echo "Incorrect environment";
    exit 1;
fi

# tasks to run before composer install (svn up/git pull)

if [[ $REPLY =~ ^[Pp]$ ]]; then
    composer install --prefer-dist --no-dev --classmap-authoritative
elif [[ $REPLY =~ ^[Tt]$ ]]; then
    composer install --prefer-dist --classmap-authoritative
elif [[ $REPLY =~ ^[Dd]$ ]]; then
    composer install
fi

# additional tasks after composer install (clear cache, migrations, etc.)

Сохранено в bin/deploy в проекте и добавлены права на выполнение. Так что теперь я использую bin/deploy вместо composer install:

console

Я также поставил другие общие задачи (извлечение изменений из VCS, очистка кэша, запуск миграций и т.д.), Поэтому у меня еще меньше вещей, которые нужно запомнить и запомнить во время развертывания :).