Добавить файл composer.json
При разработке пользовательских модулей существует несколько сценариев, которые требуют от разработчика добавления файла composer.json в свой модуль. Некоторые из этих сценариев зависят от того, предназначен ли пользовательский модуль для передачи сообществу в качестве проекта на drupal.org.
Если разработчик модуля хочет использовать библиотеку PHP, размещенную на packagist.org, он должен добавить файл composer.json в свой проект.
Если модуль является предоставленным модулем на drupal.org, имеет зависимости от других модулей и хочет протестировать изменения этих зависимостей, используя DrupalCI как часть разработки, у них должен быть composer.json, который выражает эти зависимости модуля Drupal (DrupalCI может только обнаруживать изменения в зависимостях в патчах внутри composer.json, а не в файлах .info или .info.yml.)
Если разработчик модуля хочет использовать более выразительные ограничения, предоставляемые composer.json, такие как операторы вставки или тильды, они возможны только в composer.json. (Хотя сам Drupal не будет связан этими ограничениями, они будут соблюдаться только во время сборки, если конечный пользователь использует Composer для создания своего сайта.)
Если модуль не имеет каких-либо зависимостей, или зависимости являются исключительно другими модулями Drupal, тогда composer.json не требуется. Однако наличие composer.json также не оказывает негативного влияния.
Независимо от того, имеет ли разработчик файл composer.json, их зависимости модуля Drupal должны все еще быть выражены в их .info.ymlfiles, чтобы Drupal мог гарантировать, что правильные модули включены.
Определите ваш модуль как пакет PHP
Более широкое сообщество PHP использует Composer для управления пакетами; это также сделано в Drupal. Например, проект Drupal зависит от пакета «drupal / core». Тип пакета «drupal / core» определен как «drupal-core», поэтому Composer знает, что с ним делать. Библиотека composer/installers определяет несколько типов Drupal. Эти:
- drupal-module
- drupal-theme
- drupal-library
- drupal-profile
- drupal-drush
Вот полный пример того, как проект mobile_detect использует composer.json, чтобы зависеть от внешнего проекта mobiledetect/mobiledetectlib:
{ "name": "drupal/mobile_detect", "description": "Mobile_Detect is a lightweight PHP class for detecting mobile devices.", "type": "drupal-module", "homepage": "https://drupal.org/project/mobile_detect", "authors": [ { "name": "Matthew Donadio (mpdonadio)", "homepage": "https://www.drupal.org/u/mpdonadio", "role": "Maintainer" }, { "name": "Darryl Norris (darol100)", "email": "admin@darrylnorris.com", "homepage": "https://www.drupal.org/u/darol100", "role": "Co-maintainer" } ], "support": { "issues": "https://drupal.org/project/issues/mobile_detect", "irc": "irc://irc.freenode.org/drupal-contribute", "source": "https://cgit.drupalcode.org/mobile_detect" }, "license": "GPL-2.0-or-later", "minimum-stability": "dev", "require": { "mobiledetect/mobiledetectlib": "~2.8" } }
Для именования вашего пакета вы должны следовать соглашениям о присвоении имен Drupal Composer.
Определение зависимостей в composer.json
При желании вы можете определить внешние зависимости для вашего модуля в composer.json. Ядро Drupal не будет автоматически обнаруживать или управлять этими зависимостями. Чтобы использовать зависимости, определенные в файле проекта composer.json, необходимо использовать одну из следующих стратегий обслуживания:
- Установите ядро Drupal и модуль с помощью composer.
- Вручную измените файл composer.json в корневом каталоге вашей установки Drupal.
Для получения дополнительной информации о composer как менеджере зависимостей для Drupal, просмотрите сравнение Composer и Drush Make как менеджеров зависимостей.
Добавление зависимостей от других модулей Drupal
По умолчанию Composer просматривает только пакеты, опубликованные в Packagist, когда он разрешает свои зависимости. Большинство модулей Drupal там не публикуются, поскольку у Drupal есть собственный репозиторий. Из-за этого вы можете получить сообщения об ошибках, такие как:
Запрошенный пакет drupal/module не найден ни в одной версии, возможно, в названии пакета есть опечатка.
Вы можете указать Composer искать модули Drupal в репозитории packages.drupal.org, выполнив следующую команду:
$ composer config repositories.drupal composer https://packages.drupal.org/8
Эта команда добавит следующий раздел в ваш файл composer.json:
"repositories": { "drupal": { "type": "composer", "url": "https://packages.drupal.org/8" } }
Совместимость с Drupal 9
Наличие файла composer.json не требуется для совместимости с Drupal 9. Drupal 9-совместим c файлом info.yml. Если в вашем проекте есть файл composer.json, наличие совместимости с версией drupal/core также не обязательно для совместимости с Drupal 9. Однако, если у вас есть требование для версии drupal/core в вашем разделе require, то оно должно быть совместимо с Drupal 9.
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.