He encontrado dependencias en un módulo personalizado con drupal-composer , ¿cómo puedo incluir una biblioteca de terceros en mi módulo personalizado sin usar Composer Manager y cómo administrar las dependencias del compositor de módulos contrib en drupal 8 que están relacionadas con mi pregunta, pero no? Parece que ya no se aplica desde Drupal 8.1 y la desaprobación del administrador Composer .
También parece que las guías populares como La introducción definitiva a D8 y Composer ya no se aplican, ya que también mencionan el administrador de compositores.
La otra solución opuesta al administrador del compositor, alterar el archivo core composer.json parece demasiado pirateo del núcleo y probablemente se rompería con cada actualización de Drush del núcleo de Drupal (?).
Más específicamente, estoy intentando actualizar Views vCards de Drupal 7 a 8. He creado mi archivo composer.json de la siguiente manera:
{
"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.*"
}
}
Pero si pongo un archivo composer.json en la carpeta de mi módulo, ¿cómo hago para que Drupal sepa que ese archivo está allí y cómo me aseguro de que zipstream-php
se descargue la biblioteca requerida ?
Simplemente ejecutar composer update
desde la raíz de Drupal actualiza muchas dependencias de Drupal, pero no incluye los archivos composer.json que están en las carpetas de los módulos. Tampoco asumo que debería llamar composer install
desde todos los módulos con dependencias.
¿Cómo hago para que Drupal esté al tanto de la dependencia de un módulo sin usar el administrador de compositor y / o el núcleo de piratería?
ACTUALIZAR:
El complemento de fusión del compositor utilizado por core parece admitir una ruta comodín:
{
"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
}
}
}
¿Por qué no se fusiona el núcleo modules/*/composer.json
, eso resolvería todo bien?
Actualización 2:
El razonamiento para no apoyar esto está cubierto en este tema (que también ha estado en silencio durante algún tiempo).
fuente
composer.json
archivo es la nueva forma recomendada y se está reemplazando drush para descargar e instalar módulos? Obviamente, el compositor resolverá automáticamente las dependencias anidadas y, de hecho, también descargará mis dependencias.Respuestas:
Nuevo método que utiliza andamio drupal para mayor flexibilidad
Para Drupal 8.4.0 y superior con drush> 9.0.0 , drush make está en desuso y debe usar un flujo de trabajo de compositor completo como se detalla en los enlaces de documentación de drupal.org a continuación. Esos enlaces recomiendan usar un proyecto de compositor, pero esto puede no funcionar para la configuración del servidor web de todos. Lo siguiente es paso a paso cómo configurar composer.json manualmente para obtener una explicación detallada. Las instrucciones con respecto a agregar módulos manualmente aún se pueden hacer.
Luego, debe agregar a composer.json manualmente lo siguiente según sus preferencias porque no hay forma de hacerlo automáticamente con el compositor tal como está. Estos configurarán drupal-scaffold para instalar sus módulos donde los desee (a diferencia del proveedor / o un directorio elegido por otro desarrollador). Cambie 'webroot' a 'www' o 'public' o cuál sea su host.
Ahora puedes instalar algunas dependencias. Tenga en cuenta que el compositor debe poder utilizar scripts y complementos para que esto funcione.
Ejecute el script drupal-scaffold una vez (o en su servidor de compilación según sea necesario):
Drupal core, módulos, temas, etc. se pueden instalar según las instrucciones a continuación sin el complemento drupal-merge.
Método anterior usando drupal-merge-plugin o trabajando con core directamente
Para Drupal 8.1.0 y superior, puede usar el compositor para requerir módulos de Drupal directamente. La documentación sobre el uso de Composer en un proyecto de Drupal y el uso de Composer para instalar paquetes de Drupal a través de Drupal.org se ha actualizado para aprovechar el paquete de drupal.org. Me parece que ya funciona bien en un escenario de implementación.
Para el desarrollo, creo que agregar manualmente la dependencia con
composer require
funciona bien. El enfoque de combinación también funciona con el complemento drupal-merge y lo uso para que mi trabajo drush fluya.Actualización 2016.06.22
Me encontré con un problema al usar drush make, que agregó las etiquetas de versión tradicionales de Drupal y las URL de paquete de drupal.org usando semver. Con ese fin, necesitaba cambiar a usar el packagist más estable en https://packagist.drupal-composer.org , que aún admite las etiquetas de versión tradicionales de Drupal.
También tenga en cuenta que el servidor de compilación o la máquina requieren una cantidad exorbitante de memoria para realizar una actualización del compositor (o requerir), lo cual es necesario en todos los escenarios en los que no es posible ejecutar la actualización del compositor en una máquina de desarrollo similar en su proceso de compilación.
Actualización 2016.09.23
Actualización 2018.03.30
fuente