web-dev-qa-db-ja.com

Composerでコアを更新するにはどうすればよいですか?

はい、確かに私はcomposer初心者です。そのため、以前のサイトでは、composerマネージャーを使用してDrupalのコアを更新しました。これは非常に簡単に使用できました(「composer drupal-update」を実行するだけです)。ただし、composerマネージャーは非推奨となったと言います。

Drupal 8.1の改善により、このモジュールのDrupal 8バージョンは非推奨となり、不要になりました。 Composerを直接使用して、必要なモジュールを取得します。これにより、必要なライブラリもダウンロードされます。

そのため、今日、セキュリティ更新をコアに適用する必要があるという警告が表示されましたが、ComposerでDrupalコアを更新する方法に関するドキュメントが見つかりません。

これはDrupal Console、Drushによって行われますか、それとも実際に実行する必要があるcomposerコマンドですか? 「drupal.orgからDrupalの最新バージョンをダウンロードして、すべてのファイルを手動で置き換える」以外の推奨プロセスはあまり明確ではありません。

10
DrupalMonster

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

私はDrupalを更新するためにdrush upcを実行するのに慣れていましたが、それによってcomposer.jsonファイルとベンダーディレクトリが上書きされました。このため、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

1つ目は、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に置き換える必要があります。 sing packages.drupal.org に基づいて、他のリポジトリがない場合に機能します。

packagist.drupal-composer.orgは2017年1月(またはDrupal.orgからの公式パッケージリポジトリの準備ができたとき)に廃止される予定です) にも注意してください。

10
kiamlaluno