Як оновити ядро ​​за допомогою Composer?


10

Гаразд, правда, я композитор-початківець. Отже, на своєму попередньому сайті я використовував менеджера композиторів для оновлення ядра Drupal. Це було досить прямо вперед (просто запустіть "композитор-друп-оновлення"). Однак менеджер композиторів зараз каже, що це застаріло.

Версія для цього модуля Drupal 8 застаріла і більше не потрібна через покращення в Drupal 8.1. Використовуйте Composer безпосередньо, щоб отримати необхідні модулі, які також завантажують необхідні бібліотеки.

Тому сьогодні я отримав попередження про те, що мені потрібно застосувати оновлення безпеки до ядра, але я не можу знайти жодної документації про те, як би ти оновив ядро ​​Drupal разом із композитором.

Це робиться через консоль Drupal, Drush чи це фактична композиторська команда, яку мені потрібно виконати? Мені не дуже зрозуміло, в чому полягає кращий процес поза "завантажуйте останню версію Drupal з drupal.org і замінюйте всі файли вручну".


Ви можете використовувати drush drush up drupal, я думаю, що це може змінити ваш composer.json tho (та інші файли), тому створіть резервну копію та поверніть її, якщо потрібно. Після цього скористайтеся, composer updateі вам слід добре поїхати
Trupal

"(та інші файли)", так, мене турбують "інші файли". У цей момент я також міг би вручну замінити їх з офіційного завантаження та запуску композиційного оновлення. Схоже, має бути простіший процес. Знищення менеджера композитора, здається, не має великого сенсу, коли немає альтернативи на даний момент.
DrupalMonster

Відповіді:


10

Щоб оновити Drupal за допомогою Composer, вам потрібно просто перемістити "drupal/core": "~8.1"рядок із розділу заміни до потрібного розділу. Зрештою, вміст файлу composer.json виглядає як наступний.

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

Я використовувався для запуску drush upcдля оновлення Drupal, але це переосмислив мій файл composer.json та каталог постачальників. Як наслідок цього, я повинен постійно працювати, composer updateщоб оновлювати вміст каталогу постачальників .

Тепер, використовуючи Composer для оновлення Drupal, я також можу використовувати його для завантаження / оновлення модулів, якими я користуюся.

Файл composer.json, який я використовую, є наступним.

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

Окрім переміщення цього рядка, як я вже сказав, я також виконував наступні команди.

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

Перший дозволяє мені вимагати модулів Drupal та оновлювати їх.

В останній раз, коли я спробував, офіційний сховище Drupal все ще знаходився в альфа-стадії, і це створило мені проблеми з модулями, які оголосили себе пакетами композиторів, але не встановили тип пакету (тобто drupal-модуль). Сподіваюся, вони вирішили проблему зараз. Для сховища Drupal Packager потрібні наступні команди.

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

Якщо ви вже використовували https://packagist.drupal-composer.org , і ви хочете замінити офіційний сайт Packagist, вам потрібно замінити першу команду на composer config repositories.0 composer https://packages.drupal.org/8, яка працює, якщо у вас немає інших сховищ, спираючись на Використання пакети.drupal.org .

Зауважте також, що заплановано припинення упаковки.drupal-composer.org у січні 2017 року (або коли офіційний репозиторій пакунків з Drupal.org буде готовий) .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.