¿Cómo actualizo Core con Composer?


10

Ok, es cierto que soy un compositor novato. Entonces, en mi sitio anterior, utilicé el administrador de compositores para actualizar el núcleo de Drupal. Fue bastante fácil de usar (solo ejecuta "composer drupal-update"). Sin embargo, el administrador del compositor ahora dice que está en desuso.

La versión Drupal 8 de este módulo está en desuso y ya no es necesaria, debido a las mejoras en Drupal 8.1. Use Composer directamente para obtener los módulos necesarios, que también descargarán sus bibliotecas requeridas.

Así que hoy recibí una advertencia de que necesito aplicar actualizaciones de seguridad a Core, pero no puedo encontrar ninguna documentación sobre cómo actualizar Drupal Core con Composer.

¿Se hace esto a través de Drupal Console, Drush o es un comando real de compositor que necesito ejecutar? No tengo muy claro cuál es el proceso preferido fuera de "descargar la última versión de Drupal de drupal.org y reemplazar todos los archivos manualmente".


Puede usar drush drush up drupal, creo que esto podría anular su composer.json aunque (y otros archivos), así que haga una copia de seguridad y revísela si es necesario. Después de ese uso composer updatey debería estar listo
Trupal

"(y otros archivos)", Sí, son los "otros archivos" lo que me preocupa. En ese punto, también podría reemplazarlos manualmente desde la descarga oficial y ejecutar la actualización del compositor. Parece que debería haber un proceso más fácil. No parece tener mucho sentido dejar en ridículo al director del compositor cuando no hay alternativa en este momento.
DrupalMonster

Respuestas:


10

Para actualizar Drupal usando Composer, solo necesita mover la "drupal/core": "~8.1"línea desde la sección de reemplazo a la sección requerida . Al final, el contenido del archivo composer.json es como el siguiente.

{
    "name": "drupal/drupal",
    "description": "Drupal is an open source content management platform powering millions of websites and applications.",
    "type": "project",
    "license": "GPL-2.0+",
    "require": {
        "composer/installers": "^1.0.21",
        "wikimedia/composer-merge-plugin": "~1.3",
        "drupal/core": "~8.1"
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
    "config": {
        "preferred-install": "dist",
        "autoloader-suffix": "Drupal8"
    },
    "extra": {
        "_readme": [
            "By default Drupal loads the autoloader from ./vendor/autoload.php.",
            "To change the autoloader you can edit ./autoload.php."
        ],
        "merge-plugin": {
            "include": [
                "core/composer.json"
            ],
            "recurse": false,
            "replace": false,
            "merge-extra": false
        }
    },
    "autoload": {
        "psr-4": {
            "Drupal\\Core\\Composer\\": "core/lib/Drupal/Core/Composer"
        }
    },
    "scripts": {
        "pre-autoload-dump": "Drupal\\Core\\Composer\\Composer::preAutoloadDump",
        "post-autoload-dump": "Drupal\\Core\\Composer\\Composer::ensureHtaccess",
        "post-package-install": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup",
        "post-package-update": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup"
    },
}

Estaba acostumbrado a ejecutar drush upcpara actualizar Drupal, pero eso anuló mi archivo composer.json y el directorio de proveedores. Como consecuencia de esto, debo ejecutar composer updatetodo el tiempo para actualizar el contenido del directorio de proveedores .

Ahora, usando Composer para actualizar Drupal, también puedo usarlo para descargar / actualizar los módulos que estoy usando.

El archivo composer.json que estoy usando es el siguiente.

{
    "name": "drupal/drupal",
    "description": "Drupal is an open source content management platform powering millions of websites and applications.",
    "type": "project",
    "license": "GPL-2.0+",
    "require": {
        "composer/installers": "^1.0.21",
        "wikimedia/composer-merge-plugin": "~1.3",
        "drupal/core": "~8.1",
        "drupal/imagick": "8.1.*@dev",
        "drupal/mollom": "^8.1",
        "drupal/honeypot": "^8.1"
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
    "config": {
        "preferred-install": "dist",
        "autoloader-suffix": "Drupal8"
    },
    "extra": {
        "_readme": [
            "By default Drupal loads the autoloader from ./vendor/autoload.php.",
            "To change the autoloader you can edit ./autoload.php."
        ],
        "merge-plugin": {
            "include": [
                "core/composer.json"
            ],
            "recurse": false,
            "replace": false,
            "merge-extra": false
        }
    },
    "autoload": {
        "psr-4": {
            "Drupal\\Core\\Composer\\": "core/lib/Drupal/Core/Composer"
        }
    },
    "scripts": {
        "pre-autoload-dump": "Drupal\\Core\\Composer\\Composer::preAutoloadDump",
        "post-autoload-dump": "Drupal\\Core\\Composer\\Composer::ensureHtaccess",
        "post-package-install": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup",
        "post-package-update": "Drupal\\Core\\Composer\\Composer::vendorTestCodeCleanup"
    },
    "repositories": {
        "drupal": {
            "type": "composer",
            "url": "https://packagist.drupal-composer.org"
        }
    }
}

Además de mover esa línea como dije, también ejecuté los siguientes comandos.

composer config repositories.drupal composer https://packagist.drupal-composer.org
composer require drupal/honeypot
composer require drupal/mollom
composer require drupal/imagick 8.1.*@dev

El primero me permite requerir módulos de Drupal y actualizarlos.

La última vez que lo intenté, el repositorio oficial de Drupal todavía estaba en etapa alfa, y me dio problemas con los módulos que se declararon como paquetes Composer, pero no establecieron el tipo de paquete (es decir, drupal-module). Espero que hayan solucionado el problema ahora. Para el repositorio de Drupal Packager, los comandos a utilizar son los siguientes.

composer config repositories.drupal composer https://packages.drupal.org/8
composer require drupal/honeypot
composer require drupal/mollom
composer require drupal/imagick 1.*@dev

Si ya estaba usando https://packagist.drupal-composer.org y desea reemplazarlo con el sitio oficial de Packagist, debe reemplazar el primer comando con composer config repositories.0 composer https://packages.drupal.org/8, que funciona si no tiene otros repositorios, basándose en Usando paquetes.drupal.org .

Tenga en cuenta también que está previsto que packagist.drupal-composer.org quede en desuso en enero de 2017 (o cuando el Repositorio de paquetes oficial de Drupal.org esté listo) .

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.