Apakah dapat mengubah file Drupal's composer.json?

8

Drupal mematuhi praktik terbaik inti yang tidak pernah dimodifikasi .

Drupal 8 memiliki file composer.json yang dibangun ke dalam inti, jika Anda perlu menambahkan perpustakaan pihak ketiga, haruskah Anda memodifikasi composer.json, atau adakah cara yang lebih baik untuk melakukan ini?

David Barratt
sumber
Bisakah kita membuka kembali diskusi ini mengingat sudah dua tahun sejak diskusi terakhir? Saya telah membaca bahwa di Drupal 8 RC1, seseorang sekarang dapat mengelola modul secara langsung melalui composer requiredi Drupal docroot. Itu semua baik dan bagus, tetapi bagaimana jika saya perlu melakukan composer require drupal/drupal-extensionyang menarik Behat, dan kemudian memodifikasi banyak hal dalam direktori vendor inti D8? Ini adalah pertanyaan yang sangat sulit di Pantheon di mana tampaknya akar repo harus menjadi dokumen Drupal.
kostajh

Jawaban:

5

Dimungkinkan untuk mengonsumsi Drupal 8 ke dalam composer.jsonfile Anda sendiri :

{
    "name": "davidbarratt/mydrupalproject",
    "require": {
        "drupal/drupal": "8.*"
        "composer/installers": "1.*"
    },
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "drupal/drupal",
                "type": "drupal-core",
                "version": "8.0.0-dev",
                "source": {
                    "url": "http://git.drupal.org/project/drupal.git",
                    "type": "git",
                    "reference": "8.x"
                }
            }
        }
    ],
    "minimum-stability": "dev"
}

Ada permintaan tarik untuk composer/installersmemungkinkan pemasangan drupal-corejenis proyek: http://github.com/composer/installers/pull/38

Senang masukan Anda pada permintaan tarik di atas, serta yang lain ini dalam antrian yang memungkinkan pemasangan modul / tema / profil.

Solusi lain yang saat ini berfungsi adalah modul Composer Manager , yang memfasilitasi composer.jsonpenggunaan untuk modul. Saat ini tersedia untuk Drupal 7, dan akan tersedia untuk Drupal 8 setelah rilis Drupal 8 alpha ditutup.

Terima kasih banyak, Rob

RobLoach
sumber
Apakah Anda ingin memperbarui jawaban Anda. :) drupal.org/node/2404989
David Barratt
1

Ada juga modul Komposer yang merupakan pembungkus Drush untuk Komposer. Modul Anda kemudian dapat menyediakan file komposernya sendiri yang akan digunakan Drush untuk mengunduh dependensi tambahan untuk modul Anda - atau situs jika Anda menggunakan sedikitnya 1 modul "khusus" untuk situs drupal Anda.

Saya juga merekomendasikan menonton seminar Drupal8 / Komposer ini dari DrupalCon Munich 2012: http://munich2012.drupal.org/content/drupal-has-dependencies-lets-manage-them

Tenken
sumber
Drush Composer hanyalah pembungkus di sekitar Composer. Jika Anda menggunakannya untuk memodifikasi persyaratan berbasis Komposer Drupal, itu akan memodifikasi composer.jsonfile root Drupal . Juga, video untuk Munich 2012 tidak lagi tersedia.
paul-m
0

Iya.

Dapat diterima menggunakan Komposer dengan cara yang seharusnya digunakan. :-)

Edit:

Paket ini ada untuk membantu Anda mengelola proyek Drupal berbasis Komposer: https://github.com/drupal-composer/drupal-project

paul-m
sumber
Apakah Anda memiliki kutipan?
David Barratt
Saya punya ini: composer create-project drupal/drupal drupal_root ~8@dev --keep-vcs cd drupal_root composer require vendor/package ~1... memutuskan Anda tidak perlu paket itu ... git checkout -- composer.json composer updateDan saya ingin menyimpannya.
paul-m
Itu masih memodifikasi file root composer.json. Anda masih harus menggabungkan perubahan Anda dengan perubahan Drupal. Atau lebih buruk, jika seseorang tidak memperbarui file komposer mereka seperti yang diperintahkan, Anda dapat menemukan kesalahan besar atau lubang keamanan kritis. Bagaimana Anda menyiasati ini?
David Barratt
Kamu tidak. Anda harus melakukan hal-hal itu. Tidak ada hal-hal komposer otomatis untuk Drupal 8 saat ini, di luar skrip yang Anda buat untuk melakukannya.
paul-m
Jika Anda harus menggabungkan perubahan dengan Drupal, bukankah itu sebabnya Anda tidak mengubah inti?
David Barratt