Agregar archivo composer.json
Al desarrollar módulos personalizados, existen varios escenarios que requieren que el desarrollador agregue un archivo composer.json a su módulo. Algunos de estos escenarios dependen de si el módulo personalizado está destinado a ser compartido con la comunidad como un proyecto en drupal.org.
Si el desarrollador del módulo quiere usar una biblioteca PHP alojada en packagist.org, debe agregar un archivo composer.json a su proyecto.
Si el módulo es un módulo contribuido en drupal.org, tiene dependencias de otros módulos y desea probar los cambios de esas dependencias usando DrupalCI como parte del desarrollo, debe tener un composer.json que exprese esas dependencias del módulo Drupal (DrupalCI solo puede detectar cambios en dependencias en los parches dentro de composer.json, no en archivos .info o .info.yml).
Si el desarrollador del módulo quiere usar restricciones más expresivas que ofrece composer.json, como operadores de inserción o tilde, solo son posibles en composer.json. (Aunque Drupal mismo no estará ligado a estas restricciones, estas se aplicarán solo durante la construcción, si el usuario final usa Composer para construir su sitio.)
Si el módulo no tiene dependencias o las dependencias son exclusivamente otros módulos de Drupal, entonces no se requiere composer.json. Sin embargo, tener composer.json tampoco afecta negativamente.
Independientemente de si el desarrollador tiene un archivo composer.json, las dependencias de su módulo Drupal aún deben estar expresadas en sus archivos .info.yml para que Drupal pueda garantizar que los módulos correctos estén habilitados.
Defina su módulo como un paquete PHP
La comunidad PHP más amplia usa Composer para la gestión de paquetes; esto también se hace en Drupal. Por ejemplo, el proyecto Drupal depende del paquete "drupal/core". El tipo de paquete "drupal/core" está definido como "drupal-core", por lo que Composer sabe qué hacer con él. La biblioteca composer/installers define varios tipos para Drupal. Estos son:
- drupal-module
- drupal-theme
- drupal-library
- drupal-profile
- drupal-drush
Aquí hay un ejemplo completo de cómo el proyecto mobile_detect usa composer.json para depender del proyecto externo mobiledetect/mobiledetectlib:
{ "name": "drupal/mobile_detect", "description": "Mobile_Detect es una clase PHP ligera para detectar dispositivos móviles.", "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" } }
Para nombrar su paquete, debe seguir las convenciones de nombres de Drupal Composer.
Definición de dependencias en composer.json
Si lo desea, puede definir dependencias externas para su módulo en composer.json. El núcleo de Drupal no detectará ni gestionará automáticamente estas dependencias. Para usar dependencias definidas en el archivo composer.json del proyecto, debe usar una de las siguientes estrategias de mantenimiento:
- Instalar Drupal core y el módulo con Composer.
- Modificar manualmente el archivo composer.json en el directorio raíz de su instalación de Drupal.
Para obtener más información sobre Composer como gestor de dependencias para Drupal, consulte la comparación entre Composer y Drush Make como gestores de dependencias.
Agregar dependencias de otros módulos Drupal
Por defecto, Composer solo busca paquetes publicados en Packagist al resolver sus dependencias. La mayoría de los módulos Drupal no se publican allí porque Drupal tiene su propio repositorio. Debido a esto, puede obtener mensajes de error como:
No se encontró el paquete solicitado drupal/module en ninguna versión, posiblemente un error tipográfico en el nombre del paquete.
Puede configurar Composer para que busque módulos Drupal en el repositorio packages.drupal.org ejecutando el siguiente comando:
$ composer config repositories.drupal composer https://packages.drupal.org/8
Este comando agregará la siguiente sección en su archivo composer.json:
"repositories": { "drupal": { "type": "composer", "url": "https://packages.drupal.org/8" } }
Compatibilidad con Drupal 9
No se requiere tener un archivo composer.json para compatibilidad con Drupal 9. Drupal 9 es compatible con el archivo info.yml. Si su proyecto tiene un archivo composer.json, tampoco es obligatorio que tenga compatibilidad con la versión drupal/core para ser compatible con Drupal 9. Sin embargo, si tiene un requisito de versión para drupal/core en su sección require, debe ser compatible con 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.