Wie aktualisiere ich den Kern mit Composer?

10

Ok, zugegeben, ich bin ein Komponistenanfänger. Auf meiner vorherigen Website habe ich den Composer-Manager verwendet, um den Kern von Drupal zu aktualisieren. Das war ziemlich einfach zu bedienen (führen Sie einfach "Composer Drupal-Update" aus). Der Composer Manager sagt jetzt jedoch, dass es veraltet ist.

Die Drupal 8-Version dieses Moduls ist veraltet und wird aufgrund von Verbesserungen in Drupal 8.1 nicht mehr benötigt. Verwenden Sie Composer direkt, um die benötigten Module zu erhalten, die auch die erforderlichen Bibliotheken herunterladen.

Daher habe ich heute eine Warnung erhalten, dass ich Sicherheitsupdates auf den Core anwenden muss, aber ich kann keine Dokumentation darüber finden, wie Sie den Drupal-Core mit Composer aktualisieren würden.

Wird dies über Drupal Console, Drush oder ist es ein tatsächlicher Composer-Befehl, den ich ausführen muss? Ich bin mir nicht ganz sicher, was der bevorzugte Prozess außerhalb von "Laden Sie die neueste Version von Drupal von drupal.org herunter und ersetzen Sie alle Dateien manuell" ist.

DrupalMonster
quelle
Sie können drush verwenden drush up drupal. Ich denke, dies könnte Ihre composer.json tho (und andere Dateien) überschreiben. Sichern Sie sie also und setzen Sie sie bei Bedarf zurück. Nach dieser Verwendung composer updateund Sie sollten
bereit
"(und andere Dateien)", Ja, es sind die "anderen Dateien", um die ich mir Sorgen mache. An diesem Punkt könnte ich sie genauso gut manuell aus dem offiziellen Download ersetzen und das Composer-Update ausführen. Es scheint, dass es einen einfacheren Prozess geben sollte. Ein verächtlicher Komponistenmanager scheint nicht viel Sinn zu machen, wenn es momentan keine Alternative gibt.
DrupalMonster

Antworten:

10

Um Drupal mit Composer zu aktualisieren, müssen Sie nur die "drupal/core": "~8.1"Zeile vom Ersetzungsabschnitt in den erforderlichen Abschnitt verschieben. Am Ende ist der Inhalt der Datei composer.json wie folgt.

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

Ich wurde verwendet, um drush upcDrupal zu aktualisieren, aber dadurch wurden meine Datei composer.json und das Herstellerverzeichnis überschrieben. Infolgedessen sollte ich composer updatealle Male ausführen , um den Inhalt des Herstellerverzeichnisses zu aktualisieren .

Mit Composer zum Aktualisieren von Drupal kann ich jetzt auch die von mir verwendeten Module herunterladen / aktualisieren.

Die von mir verwendete Datei composer.json ist die folgende.

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

Abgesehen davon, dass ich diese Zeile wie gesagt verschoben habe, habe ich auch die folgenden Befehle ausgeführt.

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

Mit dem ersten kann ich Drupal-Module anfordern und aktualisieren.

Das letzte Mal, als ich es versuchte, befand sich das offizielle Drupal-Repository noch im Alpha-Stadium und es gab mir Probleme mit Modulen, die sich als Composer-Pakete deklarierten, aber den Pakettyp (dh das Drupal-Modul) nicht festlegten. Ich hoffe, sie haben das Problem jetzt behoben. Für das Drupal Packager-Repository sind die folgenden Befehle zu verwenden.

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

Wenn Sie bereits https://packagist.drupal-composer.org verwendet haben und durch die offizielle Packagist-Site ersetzen möchten, müssen Sie den ersten Befehl durch ersetzen. Dies composer config repositories.0 composer https://packages.drupal.org/8funktioniert, wenn Sie keine anderen Repositorys haben Verwenden von packages.drupal.org .

Beachten Sie auch, dass packagist.drupal-composer.org voraussichtlich im Januar 2017 veraltet sein wird (oder wenn das offizielle Paket-Repository von Drupal.org fertig ist) .

kiamlaluno
quelle