process-timeout
allow-plugins
use-include-path
preferred-install
use-parent-dir
store-auths
github-protocols
github-oauth
gitlab-domains
gitlab-oauth
gitlab-token
gitlab-protocol
disable-tls
secure-http
bitbucket-oauth
cafile
capath
http-basic
bearer
platform
vendor-dir
bin-dir
data-dir
cache-dir
cache-files-dir
cache-repo-dir
cache-vcs-dir
cache-files-ttl
cache-files-maxsize
cache-read-only
bin-compat
prepend-autoloader
autoloader-suffix
optimize-autoloader
sort-packages
classmap-authoritative
apcu-autoloader
github-domains
github-expose-hostname
use-github-api
notify-on-install
discard-changes
archive-format
archive-dir
htaccess-protect
lock
platform-check
secure-svn-domains
В этой главе будет описан раздел config
схемы composer.json
.
process-timeout
Таймаут в секундах для выполнения процессов, по умолчанию 300 (5 минут). Это время, в течение которого процессы, такие как git clones, могут выполняться, прежде чем Composer посчитает, что они завершились. Если у вас медленное соединение или огромные ресурсы, которые нужно принять/передать, это значение может потребоваться увеличить.
Для отключения таймаута процесса в пользовательской команде в разделе scripts
доступен static helper:
{
"scripts": {
"test": [
"Composer\\Config::disableProcessTimeout",
"phpunit"
]
}
}
allow-plugins
По умолчанию установлено значение {}
, которое не позволяет загружать плагины.
Начиная с версии Composer 2.2.0, опция allow-plugins
добавляет уровень безопасности, позволяя вам ограничить, какие плагины Composer могут выполнять код во время работы Composer.
При первой активации нового плагина, который еще не указан в опции config, Composer выводит предупреждение. Если вы запустите Composer в интерактивном режиме, он предложит вам решить, хотите ли вы использовать плагин или нет.
Используйте этот параметр, чтобы разрешить выполнение кода только тем пакетам, которым вы доверяете. Установите его в объект с шаблонами имен пакетов в качестве ключей. Значения true
- разрешить, false
- запретить, подавляя дальнейшие предупреждения и подсказки.
{
"config": {
"allow-plugins": {
"third-party/required-plugin": true,
"my-organization/*": true,
"unnecessary/plugin": false
}
}
}
Вы также можете установить для самого параметра allow-plugins
в config
значение false
, чтобы запретить все плагины, или true
, чтобы разрешить запуск всех плагинов (НЕ рекомендуется). Например:
{
"config": {
"allow-plugins": false
}
}
use-include-path
По умолчанию имеет значение false
. Если значение равно true
, автозагрузчик Composer также будет искать классы в include path PHP.
preferred-install
По умолчанию установлено значение dist
, но может быть установлено одно из значений source
, dist
или auto
. Этот параметр позволяет задать метод установки, который предпочтет использовать Composer. При желании может быть объектом с шаблонами имен пакетов для ключей для более детальных настроек установки.
{
"config": {
"preferred-install": {
"my-organization/stable-package": "dist",
"my-organization/*": "source",
"partner-organization/*": "auto",
"*": "dist"
}
}
}
source
означает, что Composer будет устанавливать пакеты из их исходникаsource
, если таковой имеется. Обычно это клон git или эквивалентная проверка системы контроля версий, которую использует пакет. Это полезно, если вы хотите внести исправление в проект и получить локальный git-клон зависимости напрямую.auto
- это унаследованное поведение, при котором Composer автоматически используетsource
для dev-версий, иdist
в противном случае.dist
(по умолчанию в Composer 2.1) означает, что Composer устанавливается изdist
, где это возможно. Обычно это загрузка zip-файла, что быстрее, чем клонирование всего репозитория.
Примечание: Порядок следования пакетов имеет значение. Более строгие компоненты должны быть раньше, чем более мягкие. При смешивании строковой нотации с хэш-конфигурацией в глобальных и пакетных конфигурациях строковая нотация переводится в
*
пакетный шаблон.
use-parent-dir
При запуске Composer в каталоге, где нет composer.json, если он есть в каталоге выше, Composer по умолчанию спросит вас, хотите ли вы использовать composer.json этого каталога вместо него.
Если вы хотите всегда отвечать "yes
" на этот запрос, вы можете установить это значение в true
. Чтобы никогда не получать запрос, установите значение false
. По умолчанию используется значение "prompt"
.
Примечание: Чтобы этот конфиг работал, он должен быть установлен в вашей глобальной пользовательской конфигурации. Используйте, например,
php composer.phar config --global use-parent-dir true
для его установки.
store-auths
Что делать после запроса аутентификации, одно из: true
(всегда хранить), false
(не хранить) и "prompt"
(спрашивать каждый раз). По умолчанию "prompt"
.
github-protocols
По умолчанию ["https", "ssh", "git"]
. Список протоколов, используемых при клонировании с github.com, в порядке приоритета. По умолчанию присутствует git
, но только если отключен secure-http
, так как протокол git не шифруется. Если вы хотите, чтобы URL-адреса удаленных push-адресов использовали https, а не ssh (git@github.com:...
), установите в списке протоколов только ["https"]
, и Composer перестанет переписывать URL-адрес push на URL-адрес ssh.
github-oauth
Список доменных имен и oauth-ключей. Например, при использовании {"github.com": "oauthtoken"}
в качестве значения этой настройки будет использовать oauthtoken
для доступа к закрытым репозиториям на github и для обхода низкого ограничения скорости по IP-адресу в их API. При необходимости Composer может запросить учетные данные, но их также можно задать вручную. Подробнее о том, как получить OAuth-токен для GitHub и синтаксис cli, читайте здесь.
gitlab-domains
По умолчанию ["gitlab.com"]
. Список доменов серверов GitLab. Используется, если вы используете тип репозитория gitlab
.
gitlab-oauth
Список доменных имен и oauth-ключей. Например, при использовании {"gitlab.com": "oauthtoken"}
в качестве значения этой опции будет использовать oauthtoken
для доступа к частным репозиториям на gitlab. Обратите внимание: если пакет размещен не на gitlab.com, доменные имена также должны быть указаны с помощью опции gitlab-domains
. Дополнительную информацию можно найти здесь
gitlab-token
Список доменных имен и приватных токенов. Приватный токен может быть либо простой строкой, либо массивом с именем пользователя и токеном. Например, при использовании {"gitlab.com": "privatetoken"}
в качестве значения этой опции будет использоваться privatetoken
для доступа к приватным репозиториям на gitlab. Использование {"gitlab.com": {"username": "gitlabuser", "token": "privatetoken"}}
будет использовать и имя пользователя, и токен для функции gitlab deploy token (https://docs.gitlab.com/ee/user/project/deploy_tokens/). Обратите внимание: если пакет размещен не на gitlab.com, доменные имена также должны быть указаны с помощью опции gitlab-domains
. Дополнительную информацию можно найти здесь
gitlab-protocol
Протокол для принудительного использования при создании URL репозитория для значения source
метаданных пакета. Один из git
или http
. (https
рассматривается как синоним http
). Полезно при работе с проектами, ссылающимися на частные репозитории, которые впоследствии будут клонированы в заданиях GitLab CI с GitLab CI_JOB_TOKEN с использованием HTTP basic auth. По умолчанию Composer будет генерировать git-over-SSH URL для частных репозиториев и HTTP(S) только для публичных.
disable-tls
По умолчанию имеет значение false
. Если установлено значение true
, все HTTPS-адреса будут пытаться использовать HTTP и шифрование на сетевом уровне не будет выполняться. Включение этого параметра представляет собой риск для безопасности и НЕ рекомендуется. Лучше включить расширение php_openssl в php.ini. Его включение неявно отключит опцию secure-http
.
secure-http
По умолчанию имеет значение true
. Если установлено значение true
, через Composer можно загружать только URL-адреса по протоколу HTTPS. Если вам действительно необходим HTTP-доступ к чему-либо, вы можете отключить эту опцию, однако использование Let's Encrypt для получения бесплатного SSL-сертификата, как правило, является лучшей альтернативой.
bitbucket-oauth
Список доменных имен и их потребителей. Например, используя {"bitbucket.org": { "consumer-key": "myKey", "consumer-secret": "mySecret"}}
. Подробнее читайте здесь.
cafile
Расположение файла центра сертификации в локальной файловой системе. В PHP 5.6+ лучше задать это через openssl.cafile в php.ini, хотя PHP 5.6+ должен уметь определять ваш системный CA файл автоматически.
capath
Если cafile
не указан или если сертификат в нем не найден, то в каталоге, на который указывает capath
, производится поиск подходящего сертификата. capath
должен быть правильно хэшированным каталогом сертификатов.
http-basic
Список доменных имен и имя пользователя/пароли для аутентификации по ним. Например, используя {"example.org": {"username": "alice", "password": "foo"}}
в качестве значения этой опции позволит Composer аутентифицироваться на example.org
. Более подробную информацию можно найти здесь.
bearer
Список доменных имен и токенов для аутентификации по ним. Например, использование {"example.org": "foo"}
в качестве значения этой опции позволит Composer аутентифицироваться на example.org
с помощью заголовка Authorization: Bearer foo
.
platform
Позволяет подделать пакеты платформы (PHP и расширения), чтобы можно было эмулировать производственную среду или определить целевую платформу в конфиге. Пример: {"php": "7.0.3", "ext-something": "4.0.3"}
.
Это гарантирует, что ни один пакет, требующий PHP 7.0.3, не будет установлен, независимо от фактической версии PHP, которую вы используете локально. Однако это также означает, что зависимость больше не проверяется корректно, если вы используете PHP 5.6, он установится нормально, так как предполагает версию 7.0.3, но затем произойдет сбой во время выполнения. Это также означает, что если указано {"php": "7.4"}
, то не будут использоваться пакеты, которые определяют 7.4.1
как минимальную версию.
Поэтому, если вы используете это, рекомендуется, и более безопасно, также выполнить команду check-platform-reqs
как часть вашей стратегии развертывания.
Если зависимость требует какого-то расширения, которое у вас не установлено локально, вы можете игнорировать его, передав --ignore-platform-req=ext-foo
для update
, install
или require
. Однако в долгосрочной перспективе вам следует установить необходимые расширения, так как если вы проигнорируете одно из них сейчас, а через месяц новый пакет, который вы добавите, также потребует его, вы можете неосознанно создать проблемы в production.
Если расширение установлено локально, но не на production, вы можете искусственно скрыть его от Composer, используя {"ext-foo": false}
.
vendor-dir
По умолчанию используется каталог vendor
. При желании можно установить зависимости в другой каталог. $HOME
и ~
будут заменены путем к вашему домашнему каталогу в vendor-dir
и всех *-dir
опциях ниже.
bin-dir
По умолчанию vendor/bin
. Если проект включает двоичные файлы, они будут симлинкованы в этот каталог.
data-dir
По умолчанию это C:\Users\<user>\AppData\Roaming\Composer
в Windows, $XDG_DATA_HOME/composer
в unix системах, которые следуют спецификации XDG Base Directory, и $COMPOSER_HOME
в других unix системах. В настоящее время он используется только для хранения прежних файлов composer.phar, чтобы иметь возможность откатиться к более старым версиям. См. также COMPOSER_HOME
.
cache-dir
По умолчанию используется C:\Users\<user>\AppData\Local\Composer
в Windows, /Users/<user>/Library/Caches/composer
в macOS, $XDG_CACHE_HOME/composer
в unix-системах, которые следуют спецификации XDG Base Directory, и $COMPOSER_HOME/cache
в других unix-системах. Хранит все кэши, используемые Composer. См. также COMPOSER_HOME
.
cache-files-dir
По умолчанию $cache-dir/files
. Хранит zip-архивы пакетов.
cache-repo-dir
По умолчанию $cache-dir/repo
. Хранит метаданные репозитория для типа composer
и VCS-репозиториев типа svn
, fossil
, github
и bitbucket
.
cache-vcs-dir
По умолчанию $cache-dir/vcs
. Хранит клоны VCS для загрузки метаданных репозитория VCS для типов git
/hg
и для ускорения установки.
cache-files-ttl
По умолчанию 15552000
(6 месяцев). Composer кэширует все пакеты dist (zip, tar, ...), которые он загружает. По умолчанию они удаляются после шести месяцев неиспользования. Эта опция позволяет вам изменить этот срок (в секундах) или полностью отключить его, установив значение 0
.
cache-files-maxsize
По умолчанию 300MiB
. Composer кэширует все пакеты dist (zip, tar, ...), которые он загружает. Когда периодически запускается сборка мусора, это максимальный размер кэша, который может быть использован. Более старые (менее используемые) файлы будут удаляться первыми, пока кэш не заполнится.
cache-read-only
По умолчанию имеет значение false
. Использовать ли кэш Composer в режиме только для чтения.
bin-compat
По умолчанию установлено значение auto
. Определяет совместимость устанавливаемых двоичных файлов.
- Если установлено значение
auto
, то Composer устанавливает только прокси-файлы .bat под Windows или WSL. - Если установлено значение
full
, то для каждого двоичного файла будут установлены как .bat файлы для Windows, так и скрипты для операционных систем на базе Unix. Это полезно, если вы запускаете Composer в виртуальной машине linux, но хотите, чтобы .bat прокси-файлы были доступны для использования в основной ОС Windows. - Если установлено значение
proxy
, Composer будет создавать только прокси-файлы в стиле bash/Unix и никаких .bat-файлов даже в Windows/WSL.
prepend-autoloader
По умолчанию имеет значение true
. Если установлено значение false
, автозагрузчик Composer не будет добавляться к существующим автозагрузчикам. Иногда это необходимо для устранения проблем совместимости с другими автозагрузчиками.
autoloader-suffix
По умолчанию равно null
. Непустая строка, которая будет использоваться в качестве суффикса для генерируемого автозагрузчика Composer. При значении null
будет сгенерирован случайный суффикс.
optimize-autoloader
По умолчанию имеет значение false
. Если true
, всегда оптимизируется при сбое автозагрузки.
sort-packages
По умолчанию имеет значение false
. Если true
, команда require
сохраняет пакеты, отсортированные по имени в composer.json при добавлении нового пакета.
classmap-authoritative
По умолчанию имеет значение false
. Если true
, автозагрузчик Composer будет загружать классы только из карты классов. Подразумевает optimize-autoloader
.
apcu-autoloader
По умолчанию имеет значение false
. Если true
, автозагрузчик Composer будет проверять наличие APCu и использовать его для кэширования найденных/не найденных классов, когда расширение включено.
github-domains
По умолчанию ["github.com"]
. Список доменов для использования в режиме github
. Это используется для настроек GitHub Enterprise.
github-expose-hostname
По умолчанию имеет значение true
. Если false
, OAuth-токены, созданные для доступа к github API, будут содержать дату вместо имени хоста машины.
use-github-api
По умолчанию имеет значение true
. Аналогично ключу no-api
для конкретного репозитория, установка use-github-api
в false
определит глобальное поведение для всех репозиториев GitHub - клонировать репозиторий, как это делается с любым другим git-репозиторием, вместо использования GitHub API. Но в отличие от прямого использования драйвера git
, Composer все равно будет пытаться использовать zip-файлы GitHub.
notify-on-install
По умолчанию имеет значение true
. Composer позволяет репозиториям определять URL уведомления, чтобы они получали уведомления всякий раз, когда устанавливается пакет из этого репозитория. Эта опция позволяет отключить такое поведение.
discard-changes
По умолчанию имеет значение false
и может быть любым из true
, false
или "stash"
. Этот параметр позволяет задать стиль обработки грязных обновлений по умолчанию в неинтерактивном режиме. true
будет всегда отбрасывать изменения в списках вендоров, в то время как "stash"
будет пытаться сохранить их и применить повторно. Используйте эту опцию для CI-серверов или скриптов развертывания, если у вас есть тенденция к изменению поставщиков.
archive-format
По умолчанию используется формат tar
. Переопределяет формат по умолчанию, используемый командой архивации.
archive-dir
По умолчанию .
. Пункт назначения по умолчанию для архивов, созданных командой архивирования.
Пример:
{
"config": {
"archive-dir": "/home/user/.composer/repo"
}
}
htaccess-protect
По умолчанию имеет значение true
. Если установлено значение false
, Composer не будет создавать файлы .htaccess
в каталогах Composer home
, cache
и data
.
lock
По умолчанию имеет значение true
. Если установлено значение false
, Composer не будет создавать файл composer.lock
и будет игнорировать его, если он есть.
platform-check
По умолчанию установлено значение php-only
, которое проверяет только версию PHP. Если установить значение true
, то также будет проверяться наличие расширения. Если установлено значение false
, Composer не будет создавать и требовать файл platform_check.php
как часть загрузочного механизма автозагрузки.
secure-svn-domains
По умолчанию []
. Перечисляет домены, которым следует доверять/помечать как использующие безопасный транспорт Subversion/SVN. По умолчанию протокол svn://
считается небезопасным и будет отклоняться, но вы можете установить этот параметр конфигурации в ["example.org"]
, чтобы разрешить использование svn URL на этом хосте. Это лучшая/более безопасная альтернатива полному отключению secure-http
.
Перевод с английского официальной документации Сomposer:
https://getcomposer.org/doc/06-config.md
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)