Допустимо ли изменять файл composer.json в Drupal?

8

Drupal придерживается лучших практик никогда не модифицирующих ядро .

Drupal 8 имеет встроенный в ядро ​​файл composer.json. Если вам нужно добавить стороннюю библиотеку, следует ли изменить файл composer.json или есть лучший способ сделать это?

Дэвид Барратт
источник
Можем ли мы вновь открыть эту дискуссию, учитывая, что прошло два года с момента ее последней дискуссии? Я читал, что в Drupal 8 RC1 теперь можно управлять модулями напрямую через composer requireDrupal docroot. Это все хорошо, но что, если мне нужно будет сделать composer require drupal/drupal-extensionчто-то из Behat и впоследствии изменить многие вещи в каталоге поставщиков ядра D8? Это особенно сложный вопрос в Пантеоне, где, очевидно, корень репо должен быть докрутом Drupal.
Костайх

Ответы:

5

Можно использовать Drupal 8 в ваш собственный composer.jsonфайл:

{
    "name": "davidbarratt/mydrupalproject",
    "require": {
        "drupal/drupal": "8.*"
        "composer/installers": "1.*"
    },
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "drupal/drupal",
                "type": "drupal-core",
                "version": "8.0.0-dev",
                "source": {
                    "url": "http://git.drupal.org/project/drupal.git",
                    "type": "git",
                    "reference": "8.x"
                }
            }
        }
    ],
    "minimum-stability": "dev"
}

Есть запрос на composer/installersвключение, который позволит установить drupal-coreтипы проектов: http://github.com/composer/installers/pull/38

Хотелось бы, чтобы вы указали вышеупомянутый запрос на получение, а также этот другой запрос в очереди, который позволяет устанавливать модули / темы / профили.

Другое решение, которое в настоящее время работает, это модуль Composer Manager , который облегчает composer.jsonиспользование для модулей. В настоящее время он доступен для Drupal 7 и будет доступен для Drupal 8, как только будут завершены альфа-релизы Drupal 8.

Большое спасибо, Роб

RobLoach
источник
Хотите обновить свой ответ? :) drupal.org/node/2404989
Дэвид Баррат
1

Существует также модуль Composer, который является оболочкой Drush для Composer. Затем ваш модуль может предоставить свой собственный файл композитора, который Drush будет использовать для загрузки дополнительных зависимостей для вашего модуля - или сайта, если вы используете, по крайней мере, 1 «пользовательский» модуль для вашего сайта drupal.

Я также рекомендую посмотреть этот семинар по Drupal8 / Composer от DrupalCon Munich 2012: http://munich2012.drupal.org/content/drupal-has-dependencies-lets-manage-them

tenken
источник
Drush Composer - это просто оболочка для Composer. Если вы используете его для изменения требований Drupal на основе Composer, он изменит корневой composer.jsonфайл Drupal . Кроме того, видео для Мюнхена 2012 больше не доступно.
Пол-м
0

Да.

Допустимо использовать Composer так, как он должен использоваться. :-)

Редактировать:

Этот пакет существует, чтобы помочь вам управлять вашим проектом Drupal на основе Composer: https://github.com/drupal-composer/drupal-project

Поль-м
источник
У вас есть цитата?
Дэвид Барратт
У меня есть это composer create-project drupal/drupal drupal_root ~8@dev --keep-vcs cd drupal_root composer require vendor/package ~1... ... решение, что вам не нужен этот пакет ... git checkout -- composer.json composer updateИ я хотел бы сохранить это.
Пол-м
Это все еще изменяет корневой файл composer.json. Вам все равно придется объединить ваши изменения с изменениями Drupal. Или, что еще хуже, если кто-то не обновит свой файл композитора, как ему было сказано, вы можете столкнуться с серьезными ошибками или критическими дырами в безопасности. Как вы справляетесь с этим?
Дэвид Барратт
Вы не Вы должны сделать эти вещи. На данный момент для Drupal 8 нет ничего автоматического для композиторов, кроме любого скрипта, который вы могли бы сделать для этого.
Пол-м
Если вам нужно объединить изменения с Drupal, не поэтому ли вы не модифицируете ядро?
Дэвид Барратт