Вы здесь

Ludwig

Альтернатива Composer.

Модуль Ludwig является альтернативой Composer, позволяя скачивать и устанавливать нужные библиотеки самостоятельно. Это альтернативный способ работы с зависимостями.

NB: Людвиг ван Бетховен был глухим композитором.

Проблема

Модули Друпала иногда требуют использования внешних PHP-библиотек. Из-за правил работы Composer, эти библиотеки не могут быть самостоятельно загружены в папку vendor — Composer должен использоваться для скачивания модуля, после чего требуемые библиотеки скачиваются им автоматически. Если Composer используется для управления одним модулем, то он должен использоваться и для управления и обновлением ядра Друпала, так как самостоятельное обновление заменит папку vendor/, удалив скачанные библиотеки.

Хотя подход к управлению сайтом через Composer удобен, мы хотим предложить альтернативу пользователям, которые боятся использования командной строки или хотят избежать использования Composer по другим причинам. Модуль Ludwig был написан для них.

Подробное описание проблемы и её решения смотрите в статье Установка Drupal Commerce 2.x без Composer, с Ludwig.

Решение

Модуль предоставляет файл ludwig.json, в котором перечисляются все необходимые библиотеки:

{
  "require": {
    "commerceguys/enum": {
      "version" : "v1.0",
      "url": "https://github.com/commerceguys/enum/archive/v1.0.zip"
    },
    "commerceguys/addressing": {
      "version" : "v1.0.0-beta3",
      "url": "https://github.com/commerceguys/addressing/archive/v1.0.0-beta3.zip"
    }
  }
}

Этот список также должен включать зависимости библиотек. В нашем примере первая библиотека требуется для commerceguys/addressing.

Управляющий сайтом может скачать библиотеки по указанным ссылкам и разместить их в папке lib модуля:

  • lib/commerceguys-enum/v1.0/
  • lib/commerceguys-addressing/v1.0.0-beta3/

Послед очистки кеша, Ludwig ServiceProvider обнаружит подпапки и добавит их как корни PSR-4 в автозагрузчик Друпала.

Требование предоставить определённую версию и наличие подпапок для версий означает, что модуль может увеличить требуемую версию в своём новом выпуске, что заставит управляющего сайтом скачать новую версию, так как библиотека будет отмечена как ненайденная.