¿Es aceptable modificar el archivo composer.json de Drupal?


8

Drupal se adhiere a la mejor práctica de nunca modificar el núcleo .

Drupal 8 tiene un archivo composer.json integrado en el núcleo, si necesita agregar una biblioteca de terceros, ¿debería modificar composer.json, o hay una mejor manera de hacerlo?


¿Podemos volver a abrir esta discusión dado que han pasado dos años desde la última vez que se discutió? He leído que en Drupal 8 RC1, ahora se pueden administrar módulos directamente a través composer requirede Drupal docroot. Eso está muy bien, pero ¿qué composer require drupal/drupal-extensionpasa si necesito hacer lo que atrae a Behat y luego modifica muchas cosas en el directorio de proveedores de D8 core? Esta es una pregunta particularmente difícil en el Panteón, donde aparentemente la raíz del repositorio debe ser el Drupal docroot.
kostajh

Respuestas:


5

Es posible consumir Drupal 8 en su propio composer.jsonarchivo:

{
    "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"
}

Hay una solicitud de extracción que composer/installerspermitirá la instalación de drupal-coretipos de proyectos: http://github.com/composer/installers/pull/38

Me encantaría su entrada en la solicitud de extracción anterior, así como esta otra en la cola que permite la instalación de módulos / temas / perfiles.

Otra solución que actualmente funciona es el módulo Composer Manager , que facilita el composer.jsonuso de los módulos. Actualmente está disponible para Drupal 7, y estará disponible para Drupal 8 una vez que se cierren las versiones alfa de Drupal 8.

Muchas gracias Rob


¿Desea actualizar su respuesta? :) drupal.org/node/2404989
David Barratt

1

También está el módulo Composer que es un contenedor Drush para Composer. Su módulo puede proporcionar su propio archivo de composición que Drush usará para descargar dependencias adicionales para su módulo, o sitio, si usa al menos 1 módulo "personalizado" para su sitio drupal.

También recomiendo ver este seminario Drupal8 / Composer de DrupalCon Munich 2012: http://munich2012.drupal.org/content/drupal-has-dependencies-lets-manage-them


Drush Composer es solo una envoltura alrededor de Composer. Si lo usa para modificar los requisitos basados ​​en el Compositor de Drupal, modificará el composer.jsonarchivo raíz de Drupal . Además, el video de Munich 2012 ya no está disponible.
Paul-m

0

Si.

Es aceptable usar Composer de la forma en que se supone que debe usarse. :-)

Editar:

Este paquete existe para ayudarlo a administrar su proyecto Drupal basado en Composer: https://github.com/drupal-composer/drupal-project


¿Tienes una cita?
David Barratt

Tengo esto: composer create-project drupal/drupal drupal_root ~8@dev --keep-vcs cd drupal_root composer require vendor/package ~1... decido que no necesita ese paquete ... git checkout -- composer.json composer updateY me gustaría conservarlo.
Paul-m

Eso todavía modifica el archivo raíz composer.json. Aún tendría que fusionar sus cambios con los cambios de Drupal. O, lo que es peor, si alguien no actualiza su archivo de compositor como se le indicó, podría encontrar errores importantes o agujeros de seguridad críticos. ¿Cómo resuelves esto?
David Barratt

Usted no Tienes que hacer esas cosas. No hay material de composición automática para Drupal 8 en este momento, más allá de cualquier script que pueda hacer para hacerlo.
Paul-m

Si tiene que fusionar los cambios con Drupal, ¿no es exactamente por eso que no modifica el núcleo?
David Barratt
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.