promet / drupal7-framework
Requires
- ckeditor/ckeditor: dev-full/stable
- composer/composer: ~1.0@alpha
- drupal/admin_menu: 7.*
- drupal/ckeditor: 7.*
- drupal/context: 7.*
- drupal/ctools: 7.*
- drupal/date: 7.*
- drupal/diff: 7.*
- drupal/drop_ship: 1.*
- drupal/drupal: 7.*
- drupal/drupal-library-installer-plugin: ~0.1
- drupal/entity: 7.*
- drupal/entityform: 7.*
- drupal/features: 7.2.*
- drupal/feeds: 7.*
- drupal/job_scheduler: 7.*
- drupal/kw_manifests: 1.*
- drupal/module_filter: 7.*
- drupal/omega: 7.4.*
- drupal/panels: 7.*
- drupal/registry_rebuild: 7.*
- drupal/rules: 7.*
- drupal/strongarm: 7.*
- drupal/tangler: ~0.1.9
- drupal/views: 7.*
- drush/drush: 6.*
- winmillwill/settings_compile: ~2.1.1
Requires (Dev)
- behat/behat: 2.5.2
- behat/mink: ~1.5.0@stable
- behat/mink-selenium2-driver: *
- drupal/backup_migrate: 7.3.*
- drupal/coder: 7.2.4
- drupal/devel: 7.*
- drupal/devel_themer: 7.1.x-dev
- drupal/diff: ~7.3.2
- drupal/drupal-extension: 0.1.5
- drupal/stage_file_proxy: 7.1.6
- drupal/xhprof: ~7.1.0-beta3
- phpunit/phpunit: 4.3.5
- simplehtmldom/simplehtmldom: 1.11.210-dev
This package is not auto-updated.
Last update: 2024-09-14 16:08:27 UTC
README
这是开发“Promet方式”的起点示例。
您可以通过使用Composer最简单地开始您的Drupal项目。
composer create-project promet/drupal7-framework your_project_name
运行此命令将下载此项目的最新版本到名为your_project_name
的新目录,并在其中调用composer install
,这将触发额外的脚本在www子目录中从Composer下载的包中创建一个工作的Drupal根。
我们在composer.json中引用了一个自定义的Composer仓库此处。这个仓库是通过使用drupal/parse-composer
遍历drupal.org上已知的项目的列表创建的,包括Drupal本身在内的所有具有Drupal 7版本的合法软件包的元数据。
我们使用drupal/tangler
通过响应install
和update
事件来创建Drupal根,并使用drupal/drupal-library-installer-plugin
提供的自定义安装程序来处理将ckeditor
放入结果Drupal应用程序的库目录中。我们还使用winmillwill/settings_compile
从cnf/config.yml
渲染settings.php文件,这确保了没有PHP经验的操作员,但了解settings.php中的不同可调整参数,将能够更新应用程序的不同部署而无需进行任何修补。
随着您向项目中添加模块,只需更新composer.json并运行composer update
即可。当您遇到破坏其他功能的点版本时,您还需要锁定一些版本。如果您对这种做法非常认真,那么在测试、客户确认和实际部署更改到生产环境之间发生点版本的情况下,您永远不会意外安装错误的模块版本。如果您对约束条件有很好的判断,您将能够更新您的贡献,而无需尝试记住已知的不可靠版本和解决方案--您只需运行composer update
即可。
这种策略听起来可能很多像drush make
,但实际上,如果您取出了导致drush make
的好的想法,并丢弃了它的一切,然后丢弃了那些好的想法以获得更好的想法,然后添加了更多的好想法,那么您就会得到这个结果。
参阅
- composer
- drupal/tangler
- drupal/drupal-library-installer-plugin
- drupal/parse-composer
- winmillwill/settings_compile
项目定制
您可能首先想要定制一下您的盒子的一些内容。这些脚本被构建用来从配置中提取大部分工作。您可能想要做的有两件事
更改项目名称
通过编辑项目变量,您可以给您的项目一个自定义名称。请注意,这将影响构建中的其他几个配置,包括基础模块的名称以及网站所在的文件夹。
更改虚拟机IP
如果您想同时运行多个虚拟机,可以编辑IP变量。
开始开发
- 您需要编辑您的机器的本地主机文件。添加条目
10.33.36.11 drupalproject.dev
- 运行
vagrant up --provision
来构建环境。 - 使用
vagrant ssh
登录。 - 导航到
/var/www/sites/drupalproject.dev
。 - PARTY!!!
Vagrant provision 目前执行完整的网站安装。
要更新而不重新构建,请在 vagrant 箱中项目根目录下运行 build/update.sh
。
还值得注意的是,如果您正在对现有网站进行工作,默认安装脚本允许您提供参考数据库以开始开发。只需将 sql 文件添加到以下任一位置
build/ref/drupalproject.sql
build/ref/drupalproject.sql.gz
使用
重要
该项目使用 drop_ship 模块来处理部署的可重复部分,所以如果您不定义依赖项,所有内容都将被禁用。 DROPSHIP_SEEDS
环境变量(见下面)应仅包含顶级项目模块和特定环境的模块。
DROPSHIP_SEEDS=drupalproject:devel
使用 Vagrant 进行简单开发
我们有一个 Vagrantfile,它引用了一个包含 php 5.4 和 apache2 以及 mysql 的 Debian 7 箱。安装 Vagrant 后,您可以开始这样进行开发
vagrant up # turn on the box and provision it vagrant ssh # log into the box like it's a server cd /var/www/sites/drupalproject.dev # go to the sync'ed folder on the box alias drush="$PWD/vendor/bin/drush -r $PWD/www" # use drush from composer drush <whatever> # do some stuff to your website
构建和部署脚本
您可能已经注意到,配置 Vagrant 箱会调用 build/install.sh
,这会导致所有模块被启用,从而提供了一个起始模式。
请注意,build/install.sh
实际上只是安装 Drupal,然后传递给 build/update.sh
,这是一个可重复且非破坏性的脚本,用于将代码更新应用到现有内容的 Drupal 网站上。当您测试更改是否已持久保存,并且您的同事可以使用它们时,您可以使用此工具。
build/install.sh # get a baseline alias drush="$PWD/vendor/bin/drush -r $PWD/www" # use drush from composer drush sql-dump > base.sql # save your baseline # ... do a whole bunch of Drupal hacking ... drush sql-dump > tmp.sql # save your intended state drush -y sql-drop && drush sqlc < base.sql # restore baseline state build/update.sh # apply changes to the baseline
例如,如果您未能提供更新钩子以删除您正在更改基本配置的字段,您可能会看到很多错误。或者,也许您已经做了正确的事情,点击了应该正常工作的项目,但您发现它没有按预期工作。这是一个修复这些问题的绝佳时机,因为您知道您想做什么,而您的同事则不知道!
实际应用更新,包括管理启用的模块、触发它们的更新钩子、禁用不应该启用的内容以及还原功能,由 drupal/drop_ship
处理,它使用(kw_manifests
的分支)提供具有相互依赖关系的可扩展部署任务集。
由于清单不能接收命令行参数,我们通过环境变量传递信息,并提供一个 env.dist,从中创建 .env 文件,然后我们的脚本将源此文件。这使得具有对目标环境访问权限的运营商能够更新这些可调整的参数,以便您可以将任意版本部署到任何环境中。
特别是,用于生成所有应启用的内容的依赖关系图的模块列表位于 DROPSHIP_SEEDS
环境变量中。您可能会注意到它只有一个列表,并且它是一个命名不佳的什么也不做的模块,除了依赖项之外什么也没有。在现实生活中,您会给这个模块一个与您的项目相关的名称,并且它将负责提供整体功能或应用程序,例如提供生成所有必须启用的依赖项的最小模块集。您可以将它视为一个不吸的安装配置文件,因为它不是单例的,因此通过仔细操作,您可以将其整个项目嵌入到使用此工作流程的另一个项目中。
参阅
本地测试
所有通过自动化方式进行测试的测试都可以在您的虚拟机上以相同的方式进行。只需从项目文件夹运行此命令,它将进行编码标准测试
./build/drupalcs.sh
或者运行此命令将进行behat测试
./build/runtests.sh
待办事项
- 将
build/scripts/default_set_theme
修改为清单文件 - 使README更加简洁,将讨论内容提取到文章或博客中