Bagaimana cara saya memperbarui inti dengan Komposer?

10

Ok, harus diakui saya seorang komposer pemula. Jadi, di situs saya sebelumnya, saya menggunakan manajer komposer untuk memperbarui inti Drupal. Itu cukup mudah untuk digunakan (jalankan saja "komposer drupal-update"). Namun, manajer komposer sekarang mengatakan sudah usang.

Versi Drupal 8 dari modul ini sudah usang dan tidak diperlukan lagi, karena perbaikan dalam Drupal 8.1. Gunakan Composer secara langsung untuk mendapatkan modul yang diperlukan, yang juga akan mengunduh perpustakaan yang diperlukan.

Jadi hari ini saya mendapat peringatan bahwa saya perlu menerapkan pembaruan keamanan ke inti, tetapi saya tidak dapat menemukan dokumentasi tentang bagaimana Anda akan memperbarui inti Drupal dengan komposer.

Apakah ini dilakukan melalui Drupal Console, Drush atau itu perintah komposer yang sebenarnya perlu saya jalankan? Saya tidak begitu jelas tentang apa proses yang disukai di luar "unduh Drupal versi terbaru dari drupal.org dan ganti semua file secara manual".

DrupalMonster
sumber
Anda dapat menggunakan drush drush up drupal, saya pikir ini mungkin menimpa composer.json Anda tho (dan file lainnya) jadi cadangkan dan kembalikan jika diperlukan. Setelah itu gunakan composer updatedan Anda akan baik-baik saja
Trupal
"(dan file lainnya)", Ya, itu "file lain" yang saya khawatirkan. Pada saat itu saya mungkin juga menggantinya secara manual dari unduhan resmi dan menjalankan pembaruan komposer. Sepertinya harus ada proses yang lebih mudah. Manajer komposer yang sudah usang tampaknya tidak masuk akal ketika tidak ada alternatif lain saat ini.
DrupalMonster

Jawaban:

10

Untuk memperbarui Drupal menggunakan Komposer, Anda hanya perlu memindahkan "drupal/core": "~8.1"baris dari bagian ganti ke bagian yang diperlukan . Pada akhirnya konten file composer.json adalah seperti yang berikut ini.

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

Saya terbiasa menjalankan drush upcuntuk memperbarui Drupal, tetapi itu menimpa file composer.json saya, dan direktori vendor. Sebagai konsekuensi dari ini, saya harus menjalankan composer updatesemua waktu untuk memperbarui konten direktori vendor .

Sekarang, menggunakan Komposer untuk memperbarui Drupal, saya juga dapat menggunakannya untuk mengunduh / memperbarui modul yang saya gunakan.

File composer.json yang saya gunakan adalah yang berikut.

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

Selain memindahkan baris itu seperti yang saya katakan, saya juga menjalankan perintah berikut.

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

Yang pertama memungkinkan saya untuk memerlukan modul Drupal dan memperbaruinya.

Terakhir kali saya mencoba, repositori resmi Drupal masih dalam tahap alfa, dan itu memberi saya masalah dengan modul yang menyatakan diri sebagai paket Komposer, tetapi tidak menetapkan jenis paket (yaitu modul drupal). Saya harap mereka memperbaiki masalahnya, sekarang. Untuk repositori Drupal Packager, perintah yang digunakan adalah sebagai berikut.

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

Jika Anda sudah menggunakan https://packagist.drupal-composer.org , dan Anda ingin mengganti dengan situs resmi Packagist, Anda perlu mengganti perintah pertama dengan composer config repositories.0 composer https://packages.drupal.org/8, yang berfungsi jika Anda tidak memiliki repositori lain, berdasarkan Menggunakan paket.drupal.org .

Perhatikan juga bahwa packagist.drupal-composer.org dijadwalkan akan dihentikan pada Januari 2017 (atau ketika Repositori Paket resmi dari Drupal.org siap) .

kiamlaluno
sumber