Composer — пакетный менеджер для языка программирования PHP, написанный на PHP. Основная задача Composer — управление зависимостями проекта, также, как это делает npm\yarn для node.js, pip для python и др.
Зависимости от Composer в виде компонентов Symfony, появились начиная с Drupal 8.0, в дальнейшем, с релиза Drupal 8.1, у Drupal появились собственные репозитории в композере и появилась возможность управлять зависимостями друпала полностью при помощи Composer.
¶Шаблоны проектов
Composer позволяет создавать новые проекты из уже имеющихся. Это равносильно клонированию репозитория проекта с последующим вызовом composer install
.
Для Drupal также существует ряд готовых composer проектов с Drupal:
-
Официальные
- drupal/recommended-project (рекомендуемый шаблон для всех проектов)
- drupal/legacy-project
- Созданные сообществом
¶Примеры использования
¶Установка новых зависимостей
Установка Drupal проекта последней стабильной версии:
composer require drupal/paragraphs
Установка Drupal проекта конкретной версии. При данном подходе, модуль обновляться не будет.
composer require drupal/paragraphs:1.8
Пример установки Drupal проекта из dev-версии. При данном подходе, зависимость будет обновляться только в пределах dev версии.
composer require drupal/drupal:1.0-dev
Пример установки Drupal проекта из dev-версии, но с блокировкой на определенный коммит. Данный пакет будет установлен из гит репозитория проекта на определенный коммит. Вы можете указать hash ID коммита целиком, либо первые 7 символов.
composer require drupal/drupal:1.0-dev#be6a91c
¶Установка зависимостей
Данная команда установит все зависимости сайта, которые были запрошены при помощи require
.
composer install
¶Обновление зависимостей
Пример команды обновления всех зависимостей на проекте, включая ядро, модули, и зависимости зависимостей.
composer update --with-dependencies -o
Пример обновления конкретной зависимости.
composer update drupal/paragraphs
Пример обновления конкретной зависимости, а также зависимостей указанных для него.
composer update drupal/paragraphs --with-dependencies -o
¶Удаление зависимостей
Пример удаления Drupal проекта.
composer remove drupal/paragraphs
¶Патчинг зависимостей
Иногда в модулях для Drupal, или в самом ядре, обнаруживают ошибки. Для исправления ошибок готовят патчи, которые в дальнейшем попадут в dev релиз, а затем в стабильный.
Для применения патчей, необходимо чтобы на проекте была установлена зависимость cweagans/composer-patches
. После чего, вы можете указывать патчи в разделе "extra.patches".
{
...
"extra": {
...
"patches": {
"drupal/core": {
"Add startup configuration for PHP server": "https://www.drupal.org/files/issues/add_a_startup-1543858-30.patch",
"Patch from local file": "./patches/fix.patch"
}
}
},
}
¶Советы и рекомендации
- Используйте Composer для управления всеми зависимостями Drupal сайта. Не нужно загружать часть зависимостей архивами с drupal.org, а другую часть через Composer. Со временем, поддерживать станет очень проблематично.
- Не пытайтесь игнорировать Composer. Вы не сможете постоянно игнорировать необходимость использования Composer, поэтому, лучше научитесь им пользоваться.
-
require
- для разработки,install
- для продакшена. Запомните это правило, оно решит множество вопросов и проблем.
¶Смотрите также
¶Ссылки
- Composer (англ.)
- Composer Documentation (англ.)
- Packagist (англ.)
- Drupal 8: Работа с Composer, Niklan, 2016