Jak zaktualizować rdzeń za pomocą Composer?

10

Ok, wprawdzie jestem nowicjuszem kompozytorskim. Tak więc na mojej poprzedniej stronie użyłem menedżera kompozytora do aktualizacji rdzenia Drupala. To było dość proste w użyciu (wystarczy uruchomić „composer drupal-update”). Jednak menedżer kompozytora mówi teraz, że jest przestarzały.

Wersja tego modułu Drupal 8 jest przestarzała i nie jest już potrzebna z powodu ulepszeń w Drupal 8.1. Użyj Composer bezpośrednio, aby uzyskać potrzebne moduły, które również pobiorą wymagane biblioteki.

Dzisiaj otrzymałem ostrzeżenie, że muszę zastosować aktualizacje zabezpieczeń do rdzenia, ale nie mogę znaleźć żadnej dokumentacji dotyczącej sposobu aktualizacji rdzenia Drupal za pomocą kompozytora.

Czy odbywa się to za pomocą Drupal Console, Drush, czy też jest to polecenie kompozytora, które muszę uruchomić? Nie bardzo wiem, jaki jest preferowany proces poza „pobieraniem najnowszej wersji Drupala z drupal.org i zastępowaniem wszystkich plików ręcznie”.

DrupalMonster
źródło
Możesz użyć drush drush up drupal, myślę, że może to zastąpić plik composer.json tho (i inne pliki), więc wykonaj kopię zapasową i przywróć w razie potrzeby. Po tym użyciu composer updatei powinieneś być
gotowy
„(i inne pliki)”, tak, martwię się o „inne pliki”. W tym momencie równie dobrze mogę ręcznie zastąpić je z oficjalnego pobrania i uruchomić aktualizację kompozytora. Wydaje się, że proces powinien być łatwiejszy. Wycofanie menedżera kompozytora wydaje się nie mieć większego sensu, gdy nie ma obecnie alternatywy.
DrupalMonster,

Odpowiedzi:

10

Aby zaktualizować Drupal za pomocą Composer, wystarczy przenieść "drupal/core": "~8.1"linię z sekcji zastępowania do sekcji wymaganej . Na koniec zawartość pliku composer.json jest następująca.

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

Byłem przyzwyczajony do uruchomienia drush upcaktualizacji Drupala, ale to zastąpiło mój plik composer.json i katalog dostawcy. W związku z tym powinienem composer updatecały czas uruchamiać, aby zaktualizować zawartość katalogu dostawcy .

Teraz, używając Composer do aktualizacji Drupala, mogę go również użyć do pobrania / aktualizacji modułów, których używam.

Plik composer.json, którego używam, jest następujący.

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

Oprócz przesunięcia tej linii, jak powiedziałem, wykonałem również następujące polecenia.

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

Pierwszy pozwala mi wymagać modułów Drupala i aktualizować je.

Ostatnim razem, gdy próbowałem, oficjalne repozytorium Drupala było nadal w fazie alfa, co dało mi problemy z modułami, które zadeklarowały się jako pakiety Composer, ale nie ustawiły typu pakietu (tj. Moduł drupal). Mam nadzieję, że teraz rozwiązali problem. W przypadku repozytorium Drupal Packager należy użyć następujących poleceń.

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

Jeśli korzystasz już z https://packagist.drupal-composer.org i chcesz zastąpić oficjalną stronę Packagist, musisz zastąpić pierwsze polecenie composer config repositories.0 composer https://packages.drupal.org/8, które działa, jeśli nie masz innych repozytoriów, w oparciu o Korzystanie z packages.drupal.org .

Zauważ również, że pakiet packagist.drupal-composer.org ma zostać wycofany w styczniu 2017 r. (Lub gdy oficjalne repozytorium pakietów z Drupal.org będzie gotowe) .

kiamlaluno
źródło