заметки веб-разработчика

Шаблон Composer для проектов Drupal

22 мая 2019 - 15:56 -- ikode

Источник - https://github.com/drupal-composer/drupal-project

Это шаблон проекта, который предоставляет стартовый набор для управления зависимостями вашего Drupal сайта с помощью Composer.

Если вы хотите узнать, как использовать его в качестве замены для Drush Make, посетите документацию на drupal.org.

Использование

Для начала необходимо установить Composer.

После этого вы можете создать проект:

composer create-project drupal-composer/drupal-project:8.x-dev some-dir --no-interaction

где some-dir - папка установки. Для установки в текущую директорию можно просто поставить точку.

С composer require ... вы можете загружать новые зависимости в вашу установку.

cd some-dir
composer require drupal/devel:~1.0

Команда composer create-project передает право собственности на все файлы создаваемому проекту. Вы должны создать новый репозиторий git и зафиксировать все файлы, кроме тех, которые перечислены в .gitignore.

Что делает шаблон?

При установке данного файла composer.json выполняются следующие задачи:

  • Drupal будет установлен в web каталоге.
  • Автозагрузчик реализован для использования сгенерированного composer autoloader в vendor/autoload.php вместо того, который предоставлен Drupal ( web/vendor/autoload.php )
  • Модули (пакеты типа drupal-module ) будут размещены в web/modules/contrib/
  • Тема (пакеты типа drupal-theme ) будет размещена в web/themes/contrib/
  • Профили (пакеты типа drupal-profile ) будут размещены в web/profiles/contrib/
  • Создает доступные для записи версии settings.php и services.yml
  • Создает каталог web/sites/default/files
  • Последняя версия drush устанавливается локально для использования в vendor/bin/drush
  • Последняя версия DrupalConsole устанавливается локально для использования в vendor/bin/drupal
  • Создает переменные среды на основе вашего .env файла. Смотрите .env.example

Обновление ядра Drupal

Этот проект будет пытаться поддерживать все ваши файлы ядра Drupal в актуальном состоянии; проект drupal-composer/drupal-scaffold используется для обеспечения обновления ваших scaffold-файлов при каждом обновлении drupal/core. Если вы настраиваете какой-либо из файлов "scaffolding" (обычно .htaccess), вам может потребоваться объединить конфликты, если какой-либо из ваших измененных файлов будет обновлен в новом выпуске ядра Drupal.

Следуйте инструкциям ниже, чтобы обновить ваши основные файлы:

  1. Запустите composer update drupal/core webflo/drupal-core-require-dev "symfony/*" --with-dependencies для обновления Drupal Core и его зависимостей.
  2. Запустите git diff чтобы определить, изменились ли какие-либо файлы скаффолдинга. Проверьте файлы на наличие изменений и восстановите все настройки в .htaccess или robots.txt .
  3. Зафиксируйте все вместе в одном коммите, чтобы web оставался синхронизированным с ядром при проверке веток или запуске git bisect .
  4. Если на шаге 2 возникают нетривиальные конфликты, вы можете выполнить эти шаги в ветке и использовать git merge для объединения обновленных файлов ядра с вашими настроенными файлами. Это облегчает использование трехстороннего инструмента слияния, такого как kdiff3. Эта настройка не требуется, если ваши изменения просты; Хранение всех ваших изменений в начале или конце файла - хорошая стратегия, позволяющая легко выполнять слияния.

Создать composer.json из существующего проекта

С помощью Drush-расширения «Composer Generate» теперь вы можете создать базовый файл composer.json из существующего проекта. Обратите внимание, что созданный файл composer.json может отличаться от файла этого проекта.

Часто задаваемые вопросы

Должен ли я фиксировать загружаемые контриб модули?

Композер рекомендует этого не делать. Они приводят аргументы этого не делать, но также и решения, если это все таки понадобится.

Должен ли я фиксировать скаффолд файлы?

Плагин drupal-scaffold может загружать скаффолд файлы (такие как index.php, update.php, …) в каталог web/ вашего проекта. Если вы не изменяли эти файлы, вы можете не регистрировать их в своей системе контроля версий (например, git). Если же вы все таки настраивали эти файлы, может быть удобно автоматически запускать плагин drupal-scaffold после каждой установки или обновления вашего проекта. Вы можете добиться этого, зарегистрировав @composer drupal:scaffold качестве команды post-install и post-update в вашем composer.json:

"scripts": {
    "post-install-cmd": [
        "@composer drupal:scaffold",
        "..."
    ],
    "post-update-cmd": [
        "@composer drupal:scaffold",
        "..."
    ]
},

Как я могу применить патчи к загруженным модулям?

Если вам необходимо применить исправления (в зависимости от изменяемого проекта, pull request часто является лучшим решением), вы можете сделать это с помощью плагина composer-patches.

Чтобы добавить патч к модулю drupal, вставьте раздел патчей в дополнительный раздел composer.json:

"extra": {
    "patches": {
        "drupal/foobar": {
            "Patch description": "URL or local path to patch"
        }
    }
}

Как мне перейти с packagist.drupal-composer.org на packages.drupal.org?

Следуйте инструкциям в документации на drupal.org.

Как мне указать версию PHP?

Этот проект поддерживает PHP 5.6 как минимальную версию (см. Требования Drupal 8 PHP ), однако возможно, что composer update может запросить некоторый пакет, который затем потребует PHP 7+.

Чтобы избежать этого, вы можете добавить этот код, указав версию PHP, которую вы хотите использовать в разделе config composer.json:

"config": {
    "sort-packages": true,
    "platform": {
        "php": "5.6.40"
    }
},