Come posso aggiornare core con Composer?


10

Ok, devo ammettere che sono un novizio compositore. Quindi, nel mio sito precedente, ho usato il direttore del compositore per aggiornare il core di Drupal. Era piuttosto semplice da usare (basta eseguire "compositore drupal-update"). Tuttavia, il direttore del compositore ora dice che è deprecato.

La versione Drupal 8 di questo modulo è obsoleta e non è più necessaria, a causa dei miglioramenti di Drupal 8.1. Usa Composer direttamente per ottenere i moduli necessari, che scaricheranno anche le loro librerie richieste.

Quindi oggi ho ricevuto un avvertimento che devo applicare gli aggiornamenti di sicurezza al core, ma non riesco a trovare alcuna documentazione su come aggiornare Drupal core con il compositore.

Questo viene fatto tramite Drupal Console, Drush o è un vero comando compositore che devo eseguire? Non sono molto chiaro su quale sia il processo preferito al di fuori di "scaricare l'ultima versione di Drupal da drupal.org e sostituire tutti i file manualmente".


Puoi usare drush drush up drupal, penso che questo potrebbe sovrascrivere il tuo composer.json tho (e altri file), quindi esegui il backup e ripristina se necessario. Dopo composer update
quell'uso

"(e altri file)", Sì, sono gli "altri file" di cui sono preoccupato. A quel punto potrei anche sostituirli manualmente dal download ufficiale ed eseguire l'aggiornamento del compositore. Sembra che dovrebbe esserci un processo più semplice. Deprecare il direttore del compositore non sembra avere molto senso quando non ci sono alternative al momento.
DrupalMonster,

Risposte:


10

Per aggiornare Drupal usando Composer, devi solo spostare la "drupal/core": "~8.1"linea dalla sezione di sostituzione alla sezione richiesta . Alla fine il contenuto del file composer.json è simile al seguente.

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

Ero abituato a correre drush upcper aggiornare Drupal, ma questo sostituiva il mio file composer.json e la directory del fornitore. Di conseguenza, dovrei eseguire composer updatetutte le volte per aggiornare il contenuto della directory del fornitore .

Ora, usando Composer per aggiornare Drupal, posso anche usarlo per scaricare / aggiornare i moduli che sto usando.

Il file composer.json che sto usando è il seguente.

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

Oltre a spostare quella linea come ho detto, ho anche eseguito i seguenti comandi.

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

Il primo mi permette di richiedere moduli Drupal e aggiornarli.

L'ultima volta che ho provato, il repository ufficiale di Drupal era ancora in fase alpha, e mi ha dato problemi con i moduli che si sono dichiarati pacchetti Composer, ma non impostando il tipo di pacchetto (cioè drupal-module). Spero che abbiano risolto il problema, ora. Per il repository Drupal Packager, i comandi da utilizzare sono i seguenti.

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

Se stavi già utilizzando https://packagist.drupal-composer.org e desideri sostituirlo con il sito Packagist ufficiale, devi sostituire il primo comando composer config repositories.0 composer https://packages.drupal.org/8, che funziona se non hai altri repository, basandoti su Utilizzando pacchetti.drupal.org .

Si noti inoltre che packagist.drupal-composer.org è programmato per essere deprecato a gennaio 2017 (o quando il Repository ufficiale dei pacchetti da Drupal.org è pronto) .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.