如何用Drush Make完成日常任务

众所周知,Drupal Make在Drupal发行版的创建过程中具有重要作用,不过他对从来没有接触过发行版的人来说同样很有用,一个很好的例子就是《applying patches like a boss》

本文中我会展示在日常工作中我如何实用Drush Make来达成一些自动化目的,同时帮助我发现一些有趣的Drupal窍门。

##Drush Make命令


Drush Make内置两个命令:

  1. make:把”.makefile“转化为Drupal代码。

  2. make-generate:从当前Drupal站生成”.makefile“。

两个命令都跟”.makefile“有关,它是一种包含Drush Make指令的文本文件。延伸阅读:.makefile语法

现在让我们开始深入一些学习Drush Make。

##重建开发环境


日常工作中,我们经常会因为开发、测试或者演示的需要来安装一个新的干净的Drupal站。除去核心之外,一般还需要安装一些其他的一系列惯用模块,例如Administration Menu, Views或者其他一些什么东西。有了Drush Make,就可以把这个过程自动化,把所有需要的项目都包含到一个文件里面。

下面是一个用于多语言测试的站点的.makefile

; Drush Make API version.
api = 2
; Drupal core.
core = 7.x

;Common modules.
projects[admin_menu][subdir] = "contrib"
projects[ctools][subdir] = "contrib"
projects[token][subdir] = "contrib"
projects[views][subdir] = "contrib"

; Development modules.
projects[devel][subdir] = "development"

; Multilingual modules.
projects[fallback_language_negotation][subdir] = "contrib"
projects[variable][subdir] = "contrib"
projects[i18n][subdir] = "contrib"
projects[i18nviews][subdir] = "contrib"

; Load some translations.
translations[] = de
translations[] = ru

这个文件可以在本地进行保存(例如在~/.drush/make-files/d7_i18n.make),也可以保存在远程服务器例如github。

可以执行make命令,通过这个文件在服务器上来创建我们的自定义环境(例如~/.drush/make-files/d7_i18n.make

  $ drush make d7_i18n.make /var/www/drupal_test.local

第一次执行可能会比较耗时,不过以后Drush会利用缓存节省很多时间。

最后.makefile中指定的最新版本的Drupal core, 第三方模块以及翻译文件都会被下载,并放置到指定位置。接下来,可以进入该站点的网址来运行install.php,或者使用Drush进行安装:

  $ drush si --db-url="mysql://user:password@localhost/databasename" --site-name="Drupal Multilingual"

另外,还可以通过–tar选项,为.makefile生成tar包。

  $ drush make d7_i18n.make drupal_multilingual --tar

在其中加入一系列的Features(基于Features模块),就建立了你自己的发行版。

##下载依赖关系


你有没有发现有些第三方模块提供了.make或者.make.example文件?这些通常包含了外部库的列表(例如Colorbox module中的jQuery Colorbox插件)。这些文件可以使用–no-core标志,在drupal站内部运行。例如我们要下载Chosen模块:

$ drush dl chosen Project chosen (7.x-2.0-beta4) downloaded to sites/all/modules/contrib/chosen. 
$ drush make sites/all/modules/contrib/chosen/chosen.make.example --no-core 
chosen downloaded from https://github.com/harvesthq/chosen/releases/download/v1.1.0/chosen_v1.1.0.zip 

在上个例子中,会下载和解压jQuery插件到libraries文件夹中,这对使用者来说会非常方便。

所以这里建议模块开发者,如果你试用了外部库,请在你的Drupal.org项目中添加一个.make.example文件。还有其他办法也能达到这个目的,例如创建一个Drush命令chosen-plugin,这需要117行代码,而make的方式只需要7行代码

##为现存网站生成makefile


利用Drush Make可以轻易的共享自定义的Drupal。首先在Drupal根目录运行generate-makefile命令:

$ drush generate-makefile drupal_custom_build.make

生成的drupal_custom_build.make文件中包含所有启用的项目版本的指令。如果一个项目中包含.git目录,Drush Make会自动设置相应的属性:

projects[redirect][type] = "module"
projects[redirect][download][type] = "git"
projects[redirect][download][url] = "http://git.drupal.org/project/redirect.git"
projects[redirect][download][branch] = "7.x-1.x"
projects[redirect][download][revision] = "0b7b8dc2d58cb277874d87c91c45f0a361e148f7"

生成的文件需要一些人工的审查工作。例如可以添加patch引用,在我的项目中为Redirect模块添加了两个补丁:

projects[redirect][patch][] = "https://drupal.org/files/issues/redirect-global-905914-145.patch" 
projects[redirect][patch][] = "https://drupal.org/files/issues/redirect.circular-loops.1796596-146.patch"

在你需要向其他同事共享你的工作环境,或为排错提供故障现场时,上面生成的.makefile会非常有用。

##帮助你探索Drupal世界


最后,Drush Make文件也是一个帮助用户了解发行版的工具。例如Commerce Kickstart或者OpenScholar中包含的众多有趣的项目。

最后,希望本文能够帮助读者更好的使用Drush,来完成日常任务,甚至建立自己的发行版。

相关

comments powered by Disqus