Я нашел зависимости в пользовательском модуле с drupal-composer , как я могу включить стороннюю библиотеку в свой пользовательский модуль без использования Composer Manager и как управлять зависимостями композитора модулей contrib на drupal 8, которые опубликованы на мой вопрос, но нет кажется, больше не применяется, так как Drupal 8.1 и устаревший менеджер Composer .
Также популярные руководства, такие как окончательное введение в D8 и Composer, похоже, больше не применяются, поскольку в них также упоминается менеджер композиторов.
Другое решение, в отличие от менеджера композиторов, изменение файла ядра composer.json выглядит как слишком большой взлом ядра и, вероятно, будет нарушаться при каждом обновлении Drush ядра Drupal (?).
Более конкретно, я пытаюсь обновить Views vCards с Drupal 7 до 8. Я создал свой файл composer.json следующим образом:
{
"name": "drupal/views_vcards",
"description": "Allows creation of vCards using the fields provided by the Views module.",
"type": "drupal-module",
"license": "GPL-2.0+",
"homepage": "https://drupal.org/project/views_vcards",
"require": {
"maennchen/zipstream-php": "0.3.*"
}
}
Но если я помещаю файл composer.json в папку моего модуля, как я могу сообщить Drupal, что этот файл есть, и как мне убедиться, что требуемая zipstream-php
библиотека загружена?
Простой запуск composer update
из корня Drupal действительно обновляет многие зависимости Drupal, но он не включает файлы composer.json, которые находятся в папках модулей. Я также не предполагаю, что должен вызывать composer install
изнутри все модули с зависимостями.
Как я могу сообщить Drupal о зависимости модуля без использования менеджера композитора и / или хакерского ядра?
ОБНОВИТЬ:
Композитор слияния плагин , используемый основным , как представляется, поддерживает подстановочные путь:
{
"require": {
"wikimedia/composer-merge-plugin": "dev-master"
},
"extra": {
"merge-plugin": {
"include": [
"composer.local.json",
"extensions/*/composer.json" // < ---- THIS LINE
],
"require": [
"submodule/composer.json"
],
"recurse": true,
"replace": false,
"merge-dev": true,
"merge-extra": false
}
}
}
Почему ядро не сливается modules/*/composer.json
, это решило бы все правильно?
Обновление 2:
Обоснование того, что это не поддерживается, рассматривается в этом выпуске (который также некоторое время оставался тихим).
источник
composer.json
файл - это новый рекомендуемый способ, и заменяется drush для загрузки и установки модулей? Очевидно, что композитор автоматически разрешит вложенные зависимости и действительно также загрузит мои зависимости.Ответы:
Новый метод с использованием drupal-scaffold для максимальной гибкости
Для Drupal 8.4.0 и более поздних версий , использующих drush> 9.0.0 , drush make не рекомендуется использовать, и вам следует использовать полный рабочий процесс компоновщика, как описано в ссылках на документацию по drupal.org ниже. Эти ссылки рекомендуют использовать проект композитора, но это может не сработать для настройки каждого веб-сервера. Ниже приведено пошаговое руководство по настройке composer.json вручную для подробного объяснения. Инструкции по добавлению модулей вручную все еще можно выполнить.
Затем вам нужно вручную добавить в composer.json следующее, исходя из ваших предпочтений, потому что не существует способа сделать это автоматически с composer как есть. Они настроят drupal-scaffold для установки ваших модулей там, где вы хотите (в отличие от vendor / или каталога, выбранного другим разработчиком). Измените 'webroot' на 'www' или 'public' или укажите ваш хост.
Теперь вы можете установить некоторые зависимости. Обратите внимание, что composer должен иметь возможность использовать сценарии и плагины, чтобы это работало.
Запустите скрипт drupal-scaffold один раз (или, при необходимости, на своем сервере сборки):
Ядро Drupal, модули, темы и т. Д. Могут быть установлены в соответствии с инструкциями ниже без использования drupal-merge-plugin.
Более старый метод с использованием drupal-merge-plugin или работа с ядром напрямую
Для Drupal 8.1.0 и выше, вы можете использовать composer для непосредственного использования модулей Drupal. Документация по использованию Composer в проекте Drupal и использованию Composer для установки пакетов Drupal через Drupal.org была обновлена, чтобы воспользоваться преимуществами packagist drupal.org. Я считаю, что это хорошо работает уже в сценарии развертывания.
Для разработки думаю, что ручное добавление в зависимость с
composer require
отлично работает. Подход слияния работает и с drupal-merge-plugin, и я использую его для своего рабочего процесса drush make.Обновление 2016.06.22
Я столкнулся с проблемой, связанной с использованием drush make, которая добавила традиционные теги версии Drupal и URL-адреса drupal.org, используя semver. Для этого мне нужно было перейти на использование стабильного пакета на сайте https://packagist.drupal-composer.org , который по-прежнему поддерживает традиционные теги версий Drupal.
Также обратите внимание, что серверу или машине сборки требуется непомерно большой объем памяти для обновления компоновщика (или требуется), что необходимо во всех сценариях, в которых запуск обновления компоновщика на аналогичной машине разработки невозможен в процессе сборки.
Обновление 2016.09.23
Обновление 2018.03.30
источник