Saya telah menemukan Dependensi dalam modul khusus dengan drupal-composer , Bagaimana saya bisa memasukkan pustaka pihak ketiga dalam modul khusus saya tanpa menggunakan Composer Manager dan Bagaimana mengelola modul contrib dependensi komposer pada drupal 8 yang dirilis ke pertanyaan saya, tetapi tidak tampaknya lebih lama berlaku sejak Drupal 8.1 dan penghentian manajer Komposer .
Juga panduan populer seperti Pengantar definitif untuk D8 dan Komposer tampaknya tidak berlaku lagi karena mereka juga menyebut manajer komposer.
Solusi lain yang menentang manajer komposer, mengubah file core composer.json terasa seperti terlalu banyak meretas inti dan mungkin akan terputus dengan setiap pembaruan Drush dari inti Drupal (?).
Lebih khusus lagi, saya mencoba memperbarui Views vCards dari Drupal 7 hingga 8. Saya telah membuat file composer.json saya sebagai berikut:
{
"name": "drupal/views_vcards",
"description": "Allows creation of vCards using the fields provided by the Views module.",
"type": "drupal-module",
"license": "GPL-2.0+",
"homepage": "https://drupal.org/project/views_vcards",
"require": {
"maennchen/zipstream-php": "0.3.*"
}
}
Tetapi jika saya meletakkan file composer.json di folder modul saya, bagaimana cara membuat Drupal sadar bahwa file itu ada di sana, dan bagaimana cara memastikan zipstream-php
perpustakaan yang diperlukan diunduh?
Cukup menjalankan composer update
dari root Drupal tidak memperbarui banyak dependensi Drupal, tetapi itu tidak termasuk file composer.json yang ada di folder modul. Saya juga tidak menganggap saya harus menelepon composer install
dari dalam semua modul dengan dependensi.
Bagaimana cara membuat Drupal menyadari ketergantungan modul tanpa menggunakan manajer komposer dan / atau inti peretasan?
MEMPERBARUI:
The komposer merge Plugin yang digunakan oleh inti muncul untuk memiliki mendukung jalur wildcard:
{
"require": {
"wikimedia/composer-merge-plugin": "dev-master"
},
"extra": {
"merge-plugin": {
"include": [
"composer.local.json",
"extensions/*/composer.json" // < ---- THIS LINE
],
"require": [
"submodule/composer.json"
],
"recurse": true,
"replace": false,
"merge-dev": true,
"merge-extra": false
}
}
}
Mengapa inti tidak bergabung modules/*/composer.json
, itu akan menyelesaikan segalanya dengan benar?
Pembaruan 2:
Alasan untuk tidak mendukung ini tercakup dalam masalah ini (yang juga telah diam selama beberapa waktu sekarang).
sumber
composer.json
file adalah cara baru yang disarankan dan keringanan untuk mengunduh dan memasang modul sedang diganti? Jelas komposer akan secara otomatis menyelesaikan dependensi bertingkat dan memang juga mengunduh dependensi saya.Jawaban:
Metode baru menggunakan drupal-scaffold untuk fleksibilitas terbesar
Untuk Drupal 8.4.0 dan lebih besar menggunakan drush> 9.0.0 , make drush sudah tidak digunakan lagi dan Anda harus menggunakan alur kerja komposer lengkap seperti yang dijelaskan dalam tautan dokumentasi drupal.org di bawah ini. Tautan tersebut merekomendasikan penggunaan proyek komposer, tetapi ini mungkin tidak berfungsi untuk pengaturan server web semua orang. Berikut ini adalah langkah-demi-langkah cara mengatur composer.json secara manual untuk penjelasan detail. Petunjuk tentang menambahkan modul secara manual masih bisa dilakukan.
Maka Anda perlu menambahkan ke composer.json secara manual berikut berdasarkan preferensi Anda karena tidak ada cara untuk melakukannya secara otomatis dengan apa adanya. Ini akan mengkonfigurasi drupal-scaffold untuk menginstal modul Anda di tempat yang Anda inginkan (tidak seperti di vendor / atau direktori yang dipilih oleh beberapa pengembang lain). Ubah 'webroot' menjadi 'www' atau 'publik' atau apa host Anda.
Sekarang Anda dapat menginstal beberapa dependensi. Perhatikan bahwa komposer harus dapat menggunakan skrip dan plugin agar ini berfungsi.
Jalankan skrip drupal-scaffold sekali (atau di server build Anda sesuai kebutuhan):
Inti Drupal, modul, tema, dll ... dapat diinstal sesuai instruksi di bawah ini tanpa drupal-merge-plugin.
Metode yang lebih lama menggunakan drupal-merge-plugin atau bekerja dengan core secara langsung
Untuk Drupal 8.1.0 dan yang lebih baru, Anda dapat menggunakan komposer untuk meminta modul Drupal secara langsung. Dokumentasi seputar Menggunakan Komposer dalam proyek Drupal dan Menggunakan Komposer untuk menginstal paket Drupal melalui Drupal.org telah diperbarui untuk memanfaatkan paket drupal.org. Saya merasa sudah berfungsi dengan baik dalam skenario penempatan.
Untuk pengembangan, saya pikir menambahkan secara manual dalam ketergantungan dengan
composer require
berfungsi dengan baik. Pendekatan penggabungan bekerja juga dengan drupal-merge-plugin dan saya menggunakan ini untuk aliran kerja drushal saya.Perbarui 2016.06.22
Saya mengalami masalah menggunakan drush make, yang menambahkan tag versi Drupal tradisional dan URL paket drupal.org menggunakan semver. Untuk itu, saya perlu beralih menggunakan packagist stabler di https://packagist.drupal-composer.org , yang masih mendukung tag versi Drupal tradisional.
Perhatikan juga bahwa server build atau mesin memerlukan jumlah memori terlalu tinggi untuk melakukan pembaruan komposer (atau mengharuskan), yang diperlukan dalam semua skenario di mana menjalankan pembaruan komposer pada mesin pengembangan yang serupa tidak dimungkinkan dalam proses pembuatan Anda.
Perbarui 2016.09.23
Perbarui 2018.03.30
sumber