Composer

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:

Совет

Не используйте на production сайтах команду require, изучите её аналог install и в чем их отличие.

Примеры использования

Установка новых зависимостей

Установка 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
Совет

Используйте данную команду на продакшене для установки зависимостей с минимальным потреблением ресурсов. Вы также можете добавить аргумент --no-dev, чтобы сократить количество зависимостей, исключив из установки те, что необходимы только в процессе разработки сайта и не требуются для его штатной работы.

Обновление зависимостей

Пример команды обновления всех зависимостей на проекте, включая ядро, модули, и зависимости зависимостей.

composer update --with-dependencies -o

Пример обновления конкретной зависимости.

composer update drupal/paragraphs

Пример обновления конкретной зависимости, а также зависимостей указанных для него.

composer update drupal/paragraphs --with-dependencies -o

Удаление зависимостей

Пример удаления Drupal проекта.

composer remove drupal/paragraphs
Предупреждение

Удаление зависимости через Composer, удалит файлы физически с проекта. Прежде чем выполнять команду, убедитесь, что вы удалили модуль с проекта при помощи административного интерфейса или команды drush pmu MODULENAME.

Патчинг зависимостей

Иногда в модулях для 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 - для продакшена. Запомните это правило, оно решит множество вопросов и проблем.

Смотрите также

Ссылки

Помощь и обратная связь

Если вы обнаружили ошибку или хотите внести улучшения, и желаете внести изменения самостоятельно при помощи Pull Request
Если вы желаете предложить улучшение для этого документа

Обратиться за помощью

Если вы не нашли то что искали, воспользуйтесь поиском.

Если вам нужна помощь с чем-то конкретным, обратитесь к сообществу.