Как мне обновить ядро ​​с помощью Composer?

10

Хорошо, по общему признанию, я начинающий композитор. Итак, на моем предыдущем сайте я использовал менеджер композиторов для обновления ядра Drupal. Это было довольно просто использовать (просто запустите "composer drupal-update"). Однако менеджер композитора теперь говорит, что он устарел.

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

Поэтому сегодня я получил предупреждение о том, что мне нужно применить обновления безопасности для ядра, но я не могу найти документацию о том, как вы обновите ядро ​​Drupal с помощью composer.

Это делается с помощью Drupal Console, Drush или это настоящая команда композитора, которую мне нужно запустить? Я не очень понимаю, какой предпочтительный процесс находится за пределами «загрузки последней версии Drupal с drupal.org и замены всех файлов вручную».

DrupalMonster
источник
Вы можете использовать drush drush up drupal, я думаю, что это может переопределить ваш composer.json tho (и другие файлы), поэтому сделайте резервную копию и восстановите, если необходимо. После этого использования, composer updateи вы должны быть хорошими, чтобы пойти
Trupal
«(и другие файлы)», да, это «другие файлы», о которых я беспокоюсь. В этот момент я мог бы также вручную заменить их из официальной загрузки и запустить обновление композитора. Кажется, должен быть более легкий процесс. Устаревший менеджер композитора, кажется, не имеет большого смысла, когда нет альтернативы в данный момент.
DrupalMonster

Ответы:

10

Чтобы обновить Drupal с помощью Composer, вам просто нужно переместить "drupal/core": "~8.1"строку из раздела replace в раздел require . В конце содержимое файла 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 и каталог vendor. Как следствие этого я должен запускать composer updateвсе время, чтобы обновить содержимое каталога vendor .

Теперь, используя 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 все еще находился в стадии альфа, и это дало мне проблемы с модулями, которые объявили себя пакетами Composer, но не установили тип пакета (т.е. drupal-module). Я надеюсь, что они решили проблему сейчас. Для хранилища 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, которая работает, если у вас нет других репозиториев, основываясь на Использование packages.drupal.org .

Также обратите внимание, что packagist.drupal-composer.org объявлен устаревшим в январе 2017 года (или когда будет готов официальный репозиторий пакетов от Drupal.org) .

киамлалуно
источник