Як оновити ядро ​​за допомогою 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.