metadrop/drupal-boilerplate

用于重新定位文档根目录的 Drupal 9 项目模板

v3.3.0 2024-05-06 10:00 UTC

README

简介

此存储库是一个模板,用于通过预先配置许多工具以最小的努力创建 Drupal 8/9/10 项目。您可以在不到3分钟的时间内将 Drupal 网站运行在本地。

包含的内置工具

  • Docker 基础设施。
  • 符合所有项目需求的模板文件夹结构。
  • 预配置并工作的 Drush,Drupal 命令行界面。
  • 使用 Markdown 文件记录项目的 MkDocs。
  • Grumphp 强制执行 Drupal 编码标准。它配置为使用 phplint、yamlint、jsonlintdrupalcheckphpcs
  • Phpqa 进行静态分析。
  • 配置并工作的 Behat BDD 测试。
  • 配置并工作的 PHPUnit 单元测试。
  • BackstopJS 用于视觉回归测试。
  • Stylelint 用于检查样式文件。
  • Lighthouse 用于检查性能、可访问性、PWA、SEO 等。
  • Pa11y 用于深入的可访问性检查。
  • Scripthor 工具集和一些开发辅助脚本。
  • 可选,准备就绪的 Solr 容器,可供 Drupal 使用。

它基于 Docker4Drupal,使用 Docker 和 Docker Compose。要获取有关可用的 web 服务器、数据库、PHP 版本和其他容器的所有信息,请检查他们的 wodby/docker4drupa 仓库

因为它在底层使用 Docker,所以您可以自定义任何您想要的内容,添加新的容器或使用任何标准 Docker 功能来满足您的项目需求。

快速预览

Drupal.Boilerplate.demo.mp4

要求

可选

  • Python 3 及已安装的 PyYAML,用于 make info 命令

用法

要创建基于此模板的新项目,建议使用 Composer 的 create-project 命令

composer create-project  --ignore-platform-reqs metadrop/drupal-boilerplate my-project

根据您想要的 Drupal 版本,您应使用不同的分支。

注意:2.x 分支仅进行最小维护,因为 Drupal9 支持将于 2023 年 11 月结束。

因为此模板在底层使用 drupal/core-recommended,所以您将获得所选核心的更新版本。

一旦 Composer 完成项目创建,将自动运行一个助手。它会问您几个问题

  • 项目名称:这是项目的机器名称。它将用于Docker容器名称、项目URL和一些其他地方。请只使用字母、数字和下划线。

  • 设置Git仓库?如果是,助手将初始化Git仓库并创建初始提交。

  • 安装Drupal?如果是,助手将配置和安装Drupal站点。

  • Radix子主题:助手可以为您创建一个Radix子主题。我们经常将Radix作为项目的基础主题。当然,您也可以跳过此步骤并使用您自己的主题。

助手完成后,如果您选择了安装Drupal,项目将运行,助手将打印访问项目的URL。

!!! 注意:默认情况下,drupal-boilerplate随最小配置安装。如果您想安装其他配置文件,必须在出现“您想安装Drupal?”问题时,不要在composer create-project安装问题期间安装Drupal。

之后,只需在项目创建完成后,使用drush site-install命令在PHP容器中安装您需要的配置文件。

示例

   drush site-install standard

请注意,如果您安装了一个实现hook_install的配置文件,make setup命令将无法正常工作,因为它从配置进行安装,而那些安装需要hook_install不存在。

常见问题解答

这适合我吗?

这个模板是一个不错的选择,适合中高级用户,他们想要在几分钟内拥有一个完整的本地环境,其中包含一套完整的工具,可以用于他们的Drupal项目。然而,您应该熟悉使用Docker、Drush以及其他工具,而无需像DDEV提供的层一样进行管理。

为什么不是Lando/DDEV/其他工具?

我们非常喜欢它们!然而,我们在尝试将它们适应某些特定项目时遇到了一些问题。这些工具通过管理层可以处理复杂话题,如Docker。然而,这个层施加了一些限制。它们并不容易遇到,但一旦遇到,就是硬限制。这就是这个模板可以发挥作用的地方。

故障排除

make info命令不起作用

需要Python 3和PyYML。

单元测试不工作

当运行make test命令时,您可能会遇到几个错误。例如

PHP Fatal error:  Declaration of Drupal\Tests\ultimate_cron\Kernel\UltimateCronQueueTest::setUp() must be compatible with Drupal\Tests\system\Kernel\System\CronQueueTest::setUp(): void in /var/www/html/web/modules/contrib/ultimate_cron/tests/src/Kernel/UltimateCronQueueTest.php on line 26

或者

Fatal error: Uncaught Error: Class 'Drupal\Tests\group\Functional\GroupBrowserTestBase' not found in /var/www/html/web/modules/contrib/webform/modules/webform_group/tests/src/Functional/WebformGroupBrowserTestBase.php:13

这是由于make test尝试运行所有单元测试,而一些模块存在问题。例如,第一个错误来自这个问题 "与核心[9.x]不兼容的内核测试",而第二个错误在另一个问题中被处理:"Webform Group子模块的PHPUnit组测试失败"。

如果您想运行所有测试,您需要解决所有这些问题。但为什么要这样做呢?您可能只想运行特定模块的测试。为此,只需在make命令中传递正确的路径,如下所示

make test web/modules/contrib/devel/tests/src/Unit