Apakah ada cara agar Drush mengunduh semua ketergantungan yang diperlukan untuk modul tertentu?

20

Misalnya jika Anda melakukan perintah berikut:

drush dl views
drush en views views_ui views_export

Anda akan mendapatkan kesalahan berikut ketika mencoba mengaktifkan modul tampilan:

Tampilan modul tidak dapat diaktifkan karena tergantung pada modul berikut yang tidak dapat ditemukan: ctools

Apakah ada cara untuk mendapatkan drush untuk mengunduh ketergantungan modul yang diperlukan?

Camsoft
sumber
Drupal benar-benar hanya harus mengintegrasikan komposer. Manajemen ketergantungan akan ditangani dengan baik.
David
Drush dengan versi yang lebih baru drush en -yakan secara otomatis mengunduh dan mengaktifkan dependensi.
tyler.frankenstein

Jawaban:

18

Drush 5 dan lebih tinggi:

Drush versi yang lebih baru (versi 5 dan lebih tinggi) akan menanyakan apakah Anda ingin mengunduh dependensi yang diperlukan saat Anda mengaktifkan ( drush en) sebuah modul. Ini juga akan menanyakan apakah Anda ingin mengunduh modul itu sendiri jika Anda belum mengunduhnya. Dikombinasikan dengan opsi "-y" (mis. drush en views -y), Semuanya akan diunduh dan diaktifkan secara otomatis tanpa mengajukan pertanyaan lebih lanjut.

Perhatikan bahwa pengunduhan dependensi secara otomatis mungkin gagal jika nama modul yang diperlukan tidak sama dengan nama proyeknya di drupal.org. Untuk info lebih lanjut, lihat jawaban asli saya untuk Drush 4 di bawah ini.

Jawaban asli (Drush 4):

Tidak, tidak ada cara untuk melakukan itu. Masalahnya adalah ada perbedaan antara modul dan proyek. Seringkali (tetapi tidak selalu) nama proyek identik dengan modul (atau salah satu modul) yang terdapat dalam proyek. Satu proyek (mis. Tampilan) dapat berisi banyak modul (views, views_ui, views_export). Saat drush dlmengunduh proyek , drush enaktifkan modul .

Ketika sebuah modul mendeklarasikan dependensi, ia mendeklarasikan dependensi pada modul, bukan proyek. Saat melakukan drush en, Drush dapat memeriksa apakah modul yang diperlukan tersedia. Namun jika itu tidak tersedia, Drush tidak memiliki cara untuk mengetahui proyek yang akan diunduh. Agar Drush dapat mengunduh proyek-proyek yang diperlukan secara otomatis, pekerjaan harus dilakukan dalam infrastruktur proyek / modul yang mendasarinya, sehingga Drush dapat mengambil pemetaan proyek dan modul. Lihat juga Lebih cerdas menangani ketergantungan yang hilang .

marcvangend
sumber
9

Sebenarnya, drush5 (masih dalam pengembangan) memiliki peta yang diketahui, ketergantungan umum (content.module, ctools, ...). Jadi itu memang mengunduh ctools untuk Anda dalam contoh Anda.

Moshe Weitzman
sumber
6

ini bukan masalah lagi karena versi terbaru drush melakukan ini "secara otomatis":

The following projects have unmet dependencies:[ok]
answers requires strongarm, references, nodereference_url, nodereference_count, eva
Would you like to download them? (y/n):
Alejandro Moreno
sumber
2

Beberapa modul, atau proyek menyertakan skrip drush make , yang dapat mengunduh dependensi dan menginstal perpustakaan eksternal.

Namun ini sebagian besar tidak terjadi, dan ada masalah dengan skrip pembuatan sarang. Masih layak untuk diperhatikan dengan beberapa modul yang lebih rumit untuk diatur.

Jeremy French
sumber
1
Saya pikir maksud Anda 'Drush make' ( drupal.org/project/drush_make ) bukan 'Drush build'. Tapi Anda benar, karena file drush membuat daftar proyek yang diperlukan untuk pembangunan, ia dapat mengunduh dependensi.
marcvangend
2

Coba modul Pembaruan cepat . Ini akan mengunduh semua proyek ketergantungan yang hilang untuk Anda.

Berikut ini adalah kutipan tentang hal itu (dari halaman proyek modul):

... menyediakan cara cepat untuk menginstal banyak proyek baru atau semua proyek ketergantungan yang hilang.

Drupal core menyediakan cara untuk menginstal modul atau tema satu per satu, tetapi Anda dapat menginstal beberapa proyek melalui modul Pembaruan cepat. Ada UI admin untuk mencari proyek yang paling terinstal dengan lebih mudah.

Tambahan, modul Pembaruan cepat menemukan semua proyek ketergantungan yang hilang untuk Anda, maka Anda bisa memilih semuanya dari UI admin dan menginstalnya dalam proses batch.

Modul Pembaruan cepat tergantung pada modul Pembaruan dan menggunakan alur kerja yang sama dengan modul Pembaruan. Dengan demikian, Anda dapat menjalankan pembaruan melalui halaman pembaruan admin di / admin / laporan / pembaruan / pembaruan.

Jay Chen
sumber