dsdobrzynski / druposer
Requires
- composer/composer: ~1.0@alpha
- composer/installers: ~1.0
- cweagans/composer-patches: 1.*
- derhasi/composer-preserve-paths: 0.1.*
- drupal/admin_menu: 7.*
- drupal/advanced_help: 7.*
- drupal/bootstrap: 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/features: 7.*
- drupal/kw_manifests: 1.*
- drupal/module_filter: 7.*
- drupal/registry_rebuild: 7.*
- drupal/rules: 7.*
- drupal/strongarm: 7.*
- drupal/tangler: ~0.1.9
- drupal/views: 7.*
- drupal/webform: 7.3.*
- drush/drush: 6.*
Requires (Dev)
- drupal/coder: 7.2.4
- drupal/devel: 7.*
- drupal/devel_themer: 7.1.x-dev
- drupal/diff: ~7.3.2
- drupal/stage_file_proxy: 7.1.6
- drupal/xhprof: ~7.1.0-beta3
- phpunit/phpunit: 4.3.5
Conflicts
- drupal/core: 8.*
This package is not auto-updated.
Last update: 2024-09-20 18:54:13 UTC
README
这是一个使用Composer开发Drupal项目的起点示例。
您可以通过使用 Composer 最简单地开始您的Drupal项目。
composer create-projectd dsdobrzynski/druposer your_project_name
运行此命令将下载此项目的最新版本到名为 your_project_name
的新目录中,并在其中调用 composer install
,这将触发额外的脚本,在htdocs子目录中从Composer下载的包中创建一个可工作的Drupal根目录。
我们在 此处 引用了自定义的composer仓库。该仓库通过使用 drupal/parse-composer
遍历drupal.org上已知的项目列表而创建,包括所有有效的包的Drupal 7版本,包括Drupal本身。
我们使用 derhasi/composer-preserve-paths
来保留自定义Drupal路径,并使用 composer/installers
将包安装到正确的位置。
当您向项目中添加模块时,只需更新composer.json并运行 composer update
。当您遇到破坏其他功能的点发行版时,您还需要固定一些版本。如果您对此非常严格,那么如果在测试、客户确认和实际部署到生产环境之间发生点发布,您将不会意外地安装错误的模块版本。如果您对约束条件非常谨慎,您将能够更新贡献,而无需尝试记住已知的不稳定版本和解决方案 - 您只需运行 composer update
即可完成。
这种策略听起来可能很多类似于 drush make
,但实际上,这是您从 drush make
中获得的好想法,然后丢弃了其中所有其他内容,然后丢弃了这些好想法以获得更好的想法,然后添加了更多的好想法。
参见
项目自定义
您可能首先想对您的一些东西进行自定义。这些脚本旨在将配置的大部分工作自动化。您可能想要做的事情几乎有两件
开始开发
此框架不提供开发环境。
如果您正在开发现有网站,也请注意,默认安装脚本允许您提供参考数据库以开始开发。只需将sql文件添加到以下任一项中即可
build/ref/drupalproject.sql
build/ref/drupalproject.sql.gz
使用
重要
此项目使用 drop_ship 模块来处理部署的可重复部分,因此如果您不定义依赖项,则所有内容都将被禁用。 DROPSHIP_SEEDS
环境变量(参见以下内容)应由顶级项目模块和环境特定模块组成。
DROPSHIP_SEEDS=drupalproject:devel
构建和部署脚本
您可能已经注意到,配置Vagrant box会导致调用 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/htdocs" # 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
环境变量中。您可能会注意到这是一个只有一个条目的列表,它是一个名为 do-nothing 的功能不佳的模块,除了依赖项之外没有其他内容。在现实生活中,您会根据您的项目给这个模块取一个相关的名字,它会负责整体功能或应用程序,例如提供生成所有必须启用才能使应用程序正常工作的依赖项的最小模块集。您可以将其视为一个不糟糕的安装配置文件,因为它不是单例的,因此您可以将整个项目嵌入使用此工作流程的另一个项目中。
参见
待办事项
- 将
build/scripts/default_set_theme
更改为清单 - 简化 README,将讨论内容抽离到文章或博客中