Czy istnieje sposób, aby Drush pobrał wszystkie wymagane zależności dla konkretnego modułu?

20

Na przykład, jeśli wykonasz następujące polecenia:

drush dl views
drush en views views_ui views_export

Podczas próby włączenia modułów widoków pojawi się następujący błąd:

Widoki modułów nie mogą zostać włączone, ponieważ zależy to od następujących modułów, których nie można znaleźć: ctools

Czy istnieje sposób, aby uzyskać drush, aby pobrać wymagane zależności modułów?

Camsoft
źródło
Naprawdę Drupal powinien po prostu zintegrować kompozytora. Zarządzanie zależnościami byłoby wtedy ładnie obsługiwane.
David
Nowsze wersje Drush z drush en -yautomatycznie pobiorą i włączą zależności.
tyler.frankenstein

Odpowiedzi:

18

Drush 5 i więcej:

Nowsze wersje Drusha (wersja 5 i wyższa) zapytają, czy chcesz pobrać wymagane zależności po włączeniu ( drush en) modułu. Zapyta również, czy chcesz pobrać sam moduł, jeśli jeszcze go nie pobrałeś. W połączeniu z opcją „-y” (np. drush en views -y) Wszystko zostanie pobrane i włączone automatycznie bez zadawania dalszych pytań.

Zauważ, że automatyczne pobieranie zależności może się nie powieść, jeśli nazwa wymaganego modułu nie jest taka sama jak nazwa projektu na drupal.org. Aby uzyskać więcej informacji, zobacz moją oryginalną odpowiedź na Drush 4 poniżej.

Oryginalna odpowiedź (Drush 4):

Nie, nie ma na to sposobu. Problem polega na tym, że istnieje różnica między modułem a projektem. Często (ale nie zawsze) nazwa projektu jest identyczna z modułem (lub jednym z modułów) zawartym w projekcie. Pojedynczy projekt (np. Widoki) może zawierać wiele modułów (widoki, views_ui, views_export). Podczas gdy drush dlpobiera projektu , drush enumożliwia moduł .

Kiedy moduł deklaruje zależności, deklaruje zależności od modułów, a nie projektów. Wykonując a drush en, Drush może sprawdzić, czy wymagany moduł jest dostępny. Jednak jeśli nie jest dostępny, Drush nie może wiedzieć, który projekt pobrać. Aby Drush mógł automatycznie pobierać wymagane projekty, należy wykonać prace w podstawowej infrastrukturze projektów / modułów, aby Drush mógł pobrać mapowanie projektów i modułów. Zobacz także Inteligentniejsza obsługa brakujących zależności .

marcvangend
źródło
9

W rzeczywistości drush5 (wciąż w fazie rozwoju) ma mapę znanych, wspólnych zależności (content.module, ctools, ...). Tak więc w twoim przykładzie rzeczywiście pobiera to ctools.

moshe weitzman
źródło
6

nie jest to już problemem, ponieważ najnowsze wersje drush robią to „automagicznie”:

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
źródło
2

Niektóre moduły lub projekty zawierają skrypt drush make , który może pobierać zależności i instalować biblioteki zewnętrzne.

Jednak w większości przypadków tak nie jest i występują problemy z zagnieżdżaniem skryptów drush make. Nadal warto zwrócić uwagę na niektóre moduły, które są bardziej skomplikowane w konfiguracji.

Jeremy French
źródło
1
Myślę, że masz na myśli „Drush make” ( drupal.org/project/drush_make ), a nie „Drush build”. Ale masz rację, ponieważ plik drush make zawiera listę projektów wymaganych do kompilacji, jest w stanie pobrać zależności.
marcvangend
2

Wypróbuj moduł szybkiej aktualizacji . Spowoduje to pobranie wszystkich brakujących projektów zależności.

Oto cytat na ten temat (ze strony projektu modułu):

... zapewnia szybki sposób na wsadowe zainstalowanie wielu nowych projektów lub wszystkich brakujących projektów zależności.

Drupal core zapewnia sposób instalowania modułu lub motywu jeden po drugim, ale możesz zainstalować wiele projektów za pośrednictwem modułu szybkiej aktualizacji. Interfejs administratora umożliwia łatwiejsze wyszukiwanie najbardziej zainstalowanych projektów.

Dodatkowy moduł szybkiej aktualizacji wyszukuje wszystkie brakujące projekty zależności, a następnie możesz po prostu wybrać wszystkie z interfejsu administratora i zainstalować je w procesie wsadowym.

Moduł szybkiej aktualizacji zależy od modułu aktualizacji i korzysta z tego samego przepływu pracy, co moduł aktualizacji. W związku z tym możesz uruchamiać aktualizacje na stronie aktualizacji administratora w / admin / raporty / aktualizacje / aktualizacja.

Jay Chen
źródło