Comment mettre à jour le core avec Composer?


10

D'accord, je suis un compositeur novice. Donc, dans mon site précédent, j'ai utilisé le gestionnaire de compositeurs pour mettre à jour le noyau de Drupal. C'était assez simple à utiliser (il suffit d'exécuter "composer drupal-update"). Cependant, le gestionnaire de compositeur 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é à Core, mais je ne trouve aucune documentation sur la façon de mettre à jour Drupal Core avec Composer.

Est-ce que cela se fait via Drupal Console, Drush ou est-ce une commande de compositeur 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 depuis drupal.org et remplacer tous les fichiers manuellement".


Vous pouvez utiliser drush drush up drupal, je pense que cela pourrait remplacer votre composer.json (ainsi que d'autres fichiers), alors sauvegardez-le et revenez si nécessaire. Après cette utilisation composer updateet vous devriez être
prêt

"(et d'autres fichiers)", ouais, ce sont les "autres fichiers" qui m'inquiètent. À ce stade, je pourrais aussi bien les remplacer manuellement à partir du téléchargement officiel et exécuter la mise à jour du compositeur. Il semble qu'il devrait y avoir un processus plus facile. Déprécier le manager de compositeur ne semble pas très logique alors qu'il n'y a pas d'alternative pour le moment.
DrupalMonster

Réponses:


10

Pour mettre à jour Drupal à l'aide de Composer, il vous suffit de déplacer la "drupal/core": "~8.1"ligne de la section de remplacement vers la section requise . À 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'étais habitué à exécuter drush upcpour mettre à jour Drupal, mais cela a remplacé mon fichier composer.json et le répertoire du fournisseur. En conséquence, je devrais exécuter composer updatetout le temps pour mettre à jour le contenu du répertoire des fournisseurs .

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 référentiel officiel Drupal était encore en phase alpha, et cela m'a posé des problèmes avec les modules qui se déclaraient comme des packages Composer, mais ne définissant pas le type de package (c'est-à-dire drupal-module). J'espère qu'ils ont résolu le problème, maintenant. Pour le référentiel 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 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, en vous basant sur Utilisation 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) .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.