web-dev-qa-db-fra.com

Comment mettre à jour le core avec Composer?

Ok, certes je suis un composer novice. Donc, dans mon site précédent, j'ai utilisé composer manager pour mettre à jour le noyau de Drupal. C'était assez simple pour use (il suffit d'exécuter "composer drupal-update"). Cependant, composer manager dit maintenant qu'il est obsolète.

La version Drupal 8 de ce module est obsolète et n'est plus nécessaire, en raison des améliorations apportées à Drupal 8.1. Utilisez Composer directement pour obtenir les modules nécessaires, qui téléchargeront également leurs bibliothèques requises.

Aujourd'hui, j'ai reçu un avertissement indiquant que je dois appliquer des mises à jour de sécurité au core, mais je ne trouve aucune documentation sur la façon dont vous mettriez à jour Drupal core avec composer.

Est-ce fait par le biais de Drupal Console, Drush ou est-ce une véritable commande composer que je dois exécuter? Je ne sais pas très bien quel est le processus préféré) en dehors de "télécharger la dernière version de Drupal de drupal.org et remplacer tous les fichiers manuellement".

10
DrupalMonster

Pour mettre à jour Drupal à l'aide de Composer, il vous suffit de déplacer le "drupal/core": "~8.1" ligne de la section remplacer à la section require . À la fin, le contenu du fichier composer.json est le suivant.

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

J'avais l'habitude d'exécuter drush upc pour mettre à jour Drupal, mais qui a remplacé mon fichier composer.json et le répertoire du fournisseur. Par conséquent, je devrais exécuter composer update tout le temps pour mettre à jour le contenu du répertoire du fournisseur .

Maintenant, en utilisant Composer pour mettre à jour Drupal, je peux également l'utiliser pour télécharger/mettre à jour les modules que j'utilise.

Le fichier composer.json que j'utilise est le suivant.

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

En plus de déplacer cette ligne comme je l'ai dit, j'ai également exécuté les commandes suivantes.

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

Le premier me permet d'exiger des modules Drupal et de les mettre à jour.

La dernière fois que j'ai essayé, le dépôt officiel Drupal était toujours en phase alpha, et cela m'a posé des problèmes avec les modules qui se déclaraient comme Composer packages, mais pas définition du type de package (ie drupal-module). J'espère qu'ils ont résolu le problème maintenant. Pour le dépôt Drupal Packager, les commandes à utiliser sont les suivantes.

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 vous utilisiez déjà https://packagist.drupal-composer.org et que vous souhaitez le remplacer par le site officiel de Packagist, vous devez remplacer la première commande par composer config repositories.0 composer https://packages.drupal.org/8, qui fonctionne si vous n'avez pas d'autres référentiels, basé sur tilisation de packages.drupal.org .

Notez également que packagist.drupal-composer.org devrait être obsolète en janvier 2017 (ou lorsque le référentiel de packages officiel de Drupal.org sera prêt) .

10
kiamlaluno