Примечание: это перепечатка моего блога, первоначально опубликованного здесь.

Drush make является частью интерфейса командной строки Drupal (CLI) Drush. Это позволяет группам разработчиков синхронизировать свои среды разработки легким, гибким, но очень мощным способом. Это также позволяет исполнителям задач, таким как Grunt, автоматизировать процесс сборки, делая обслуживание сайта Drupal во время сборки гораздо менее запутанным, и хранит все версии модулей в центральном расположении, которые можно проверить в репозитории, уничтожая contrib/ основной код в антипаттерне репо.

Что такое Друш?

Drush make — это менеджер зависимостей и инструмент сборки, который значительно снижает затраты на обслуживание и хранение для создания сайта Drupal. В нескольких коротких строках он позволяет пользователям объявить версию Drupal и все необходимые модули contrib, а затем перейти на Drupal.org, загрузить и установить эти конкретные модули в указанный каталог. Это означает, что вместо того, чтобы коммитить всю копию ядра Drupal вместе с представлениями, cTools, функциями и т. д., пользователи просто объявляют проекты [функции] [версия] = 2.3, а Drush позаботится обо всем остальном. Это означает, что вы можете быть спокойны, зная, что сайт не будет использовать взломанную версию модуля contrib. Кроме того, в проекте с несколькими разработчиками легко потерять время на отладку сред разработки. Drush make означает, что пока у каждого разработчика есть последняя версия файла make, все они будут запускать соответствующие версии зависимостей проекта.

Как мне это использовать

Во-первых, должен быть make-файл (что-то с расширением .make). Следующее — объявить необходимые модули для проекта. Самый простой из тех, что мне удалось найти, — это пример make-файла для проекта Phase2 Technology grunt-drupal-tasks. Я включу его здесь полностью.

Для тех, кто следит дома, ссылка на файл есть на Github. Первые две строки определяют версию API drush make и версию ядра Drupal.

После этого он устанавливает значение по умолчанию, при котором все модули contrib загружаются в каталог sites/all/modules/contrib. Наконец, есть директива для загрузки модуля функций версии 2.2.

Вот и все! Добавить новый модуль так же просто, как добавить проекты[foo_module][version] = 1.0, где foo_module — это URL-адрес проекта на D.O. например представления для представлений и google_analytics для модулей аналитики Google.

В Стартовом наборе Turnip есть более полнофункциональный make-файл с большим количеством примеров.

Что делает его особенным?

Это означает, что загрузка модуля, а затем «взлом» его с помощью патча осталась в прошлом.

Еще одна полезная функция — возможность разбивать модули только для разработчиков на каталог разработки, поэтому diff, krumo_search и stage_file_proxy работают на машинах разработчиков, но их можно легко исключить из тестового экземпляра.

Модернизация модулей — это несложно

Допустим, вам поручили завидную задачу по обновлению модулей на старых клиентских сайтах. Если весь исходный код находится в репозитории, эта задача может стать проблемой. Проверяем журналы изменений, запускаем драш и молимся, чтобы все заработало. Различать модули, чтобы проверить, был ли исправлен модуль, агония продолжается и продолжается.

Или вы можете сделать это:

Обновление модуля так же просто, как изменение файла make drush и пересборка. Просмотр обновлений так же прост, нужно просмотреть всего несколько строк.

Смотри Ма, нет ядра!

Отсутствие дублирования библиотек для каждого проекта позволяет разработчику сосредоточиться на создании функций и разработке модулей. Это то, что есть в репозитории, с ядрами Drupal и модулями contrib в make-файле, вроде манифеста доставки.

Drush make также работает с библиотеками, не основанными на Drupal. Например, если проекту нужна библиотека footable, просто добавьте ее в файл .make.

Приведенный выше код загружает тег 2.0.1.4 JS-плагина FooTable в библиотеки/FooTable с помощью git.b. Другими методами получения являются get, svn, git и bzr. Параметры git, svn и bzr соответствуют соответствующим форматам репо, а get использует метод wget/curl для прямой загрузки файла.

Ненавидите формат файла? Не беспокойтесь, используйте YAML

Формат .ini может показаться громоздким для тех, кто к нему не привык. Не волнуйтесь, drush make также читается как YAML. Создание файлов в формате YAML — это функция, которая появилась у меня несколько недель назад.

Файлы YAML будут активно использоваться в Drupal 8, так что приступайте!

Файл make в формате YAML выглядит следующим образом:

В этом файле примера будут загружены последние стабильные выпуски ядра и представлений Drupal 7, а также установлен подкаталог проектов по умолчанию для contrib, как и в предыдущих примерах! См. пример файла YAML .make для получения дополнительной информации. Это была недавняя разработка, так что загляните к D.O. для обновлений.

Обратный инжиниринг!

Если копирование и вставка make-файла или разветвление репозитория слишком трудоемки, и у вас есть сайт, на котором работает drush, использующий нужные модули, у людей из проекта drush есть способ перепроектировать процесс подготовки сайта для вас. Там, где вы обычно выполняете drush insert drush make-generate my_make_file.make и presto, модули, которые в настоящее время используются на сайте, будут экспортированы в вышеупомянутый файл .make.

становится лучше

Мало того, что файл может объявлять зависимости и работать как менеджер пакетов, он также работает рекурсивно. Для непосвященных понятие рекурсии означает, что данная задача вызывает сама себя, запуская процесс на новом уровне, до тошноты. Если drush make загружает модуль, который сам имеет make-файл, drush make вызывает этот make-файл для загрузки зависимостей модуля и дальнейшего упрощения базового make-файла. Например, у модуля panopoly_wysiwyg есть собственный make-файл, который содержит несколько библиотек и пару модулей Drupal. Поскольку файл является частью модуля, конкретная конфигурация модулей и библиотек была проверена сопровождающим модуля, что еще больше упрощает архитектуру сборки.

Кроме того, использование drush make может повысить ваше место в сообществе. Поскольку модулей contrib для проекта больше нет в репозитории, это требует, чтобы разработчики исправляли ошибки в модулях contrib, используя рабочий процесс на основе исправлений, и где лучше размещать исправления для использования в вашем проекте, чем в задаче на Drupal.org? Эта одна особенность drush make ускорила мое участие в сообществе. Кто знает, отправьте достаточно патчей для вашего любимого проекта, и вы можете стать со-мейнтейнером!

Первоначально опубликовано на www.phase2technology.com.