utexas/utdk_localdev

基于 Docksal 的本地开发工具,用于 UT Drupal Kit。

维护者

详细信息

github.com/utdk/utdk_localdev

源代码

安装: 147

依赖者: 0

建议者: 0

安全: 0

星标: 2

关注者: 4

分支: 0

类型:utexas-development

3.1.0 2022-07-18 16:53 UTC

This package is auto-updated.

Last update: 2024-09-11 21:12:43 UTC


README

此存储库包含基于 Docksal 的工具,用于内部开发 UT Drupal Kit。它不应 用于 单个 Drupal Kit 网站的本地开发。

对于单个 Drupal Kit 网站的本地开发,请使用以下链接中列出的选项之一:https://drupalkit.its.utexas.edu/docs/getting_started/local_development.html

针对 ITS

入门

  • 确保您已 安装了 Docksal
  • 确保您拥有 PHP 的最新版本作为您的活动本地 php-cli 版本。如果您使用的是 Mac 且有 Homebrew,您可以使用 https://github.com/shivammathur/homebrew-php 来完成此操作
  • 从您克隆存储库的根目录开始,运行 fin init。这将启动容器。
  • 然后,您可以使用 fin init-site 来安装 Drupal。
  • 如果您需要重新安装网站,则无需重新启动堆栈或重新运行任何 setup.sh,只需按需运行 fin init-site
  • 您可以使用 fin uli 来执行带有适当 URI 的 drush uli,自动管道输入以提供有效的管理员登录链接。

特别说明:Firefox

如果您使用 Firefox,则需要在浏览器识别本地生成的 SSL 证书之前安装 mkcert。运行以下命令:

brew install mkcert
brew install nss
mkcert -install

运行测试

  • 对于首次设置,请运行 fin test-init。这将复制来自 .docksal/drupal/testing-defaults 文件夹的默认文件,并将它们更新以匹配您当前的 Docksal 虚拟主机。
  • 在运行测试之前,请确认 Docker 设置 > 开发中的功能(选项卡) > 在 Apple Silicon 上使用 Rosetta 进行 x86/amd64 仿真已选中复选框,并且已单击“应用并重启”按钮。(并确认根据帮助文本已启用“虚拟化框架”)
  • 有 5 个命令可以运行测试
    • run-tests:使用并行测试运行整个 UTexas 测试套件
    • test <目录/文件>:按顺序运行 PHPUnit 功能测试,使用标准的 PHP 命令参数
    • test-js <目录/文件>:按顺序运行 PHPUnit 功能 JS 测试,使用标准的 PHP 命令参数
    • paratest-functional <目录/文件>:使用标准 PHP 命令参数并行运行 PHPUnit 功能测试
    • paratest-js <目录/文件>:使用标准 PHP 命令参数并行运行 PHPUnit 功能 JS 测试
  • 有关命令的更多详细信息,请参阅命令文件本身 - .docksal/commands/test.docksal/commands/test-js。它们都基本上以相同的方式工作,但配置为使用位于 .docksal/drupal/testing 文件夹中的相应 phpunit.xml 文件。
  • 为确保功能正常,必须将 SIMPLETEST_BASE_URL 更新以匹配 Docksal 虚拟主机名称。在大多数情况下,在运行 fin test-init 时会处理此问题。作为此命令的一部分,它将自动更新适当的 phpunit.xml 文件。这通过 perl 执行基本的查找和替换操作,将默认的 web 字符串替换为 Docksal 变量 ${VIRTUAL_HOST}
  • 如果由于某种原因命令无法正常工作,您可以手动在位于 .docksal/drupal/testing/ 的包含 phpunit.xmlphpunit-js.xmlphpunit.xml 中更新 SIMPLETEST_BASE_URL。在 Docksal 中,您的主机名称与您的文件夹名称相匹配。因此,如果您将其克隆到名为 drupalin 的文件夹中,您的 Docksal 基于的 URL 将为 http://drupalin.docksal,这是您的 SIMPLETEST_BASE_URL 应设置的值。

弃用检查

运行以下命令以使用 drupal-check 进行 Drupal 9 兼容性检查:

vendor/bin/drupal-check path/to/directory

通过 Drupal Rector 进行弃用修复

运行以下命令以尝试使用 drupal-rector 自动化 Drupal 9 兼容性修复:

  1. 将配置文件添加到项目根目录
cp vendor/palantirnet/drupal-rector/rector-config-web-dir.yml rector.yml
  1. 分析代码
vendor/bin/rector process web/modules/contrib/[YOUR_MODULE] --dry-run
  1. 应用建议的更改
vendor/bin/rector process web/modules/contrib/[YOUR_MODULE]

设置不同的 PHP 版本

  • docksal.env 文件包含堆栈不同部分的某些示例定义。可以修改 WEB_IMAGEDB_IMAGECLI_IMAGE 以使用来自 Docksal 仓库的不同 Docker 镜像。PHP 版本由 CLI_IMAGE 确定。您可以将值修改为新版本,并运行 fin up 来刷新容器。Docksal 会检测到更改,如果新 Docker 镜像不存在于您的缓存中,则会下载新镜像,并重新加载运行新 PHP 版本的容器。例如,要在 PHP 7.3 上运行,可以将 CLI_IMAGE 更新为 CLI_IMAGE='docksal/cli:2.6-php7.3',然后运行 fin up,现在 CLI 容器正在运行 PHP 7.3。并且为了澄清,CLI 容器正在确定 Drupal 将使用哪个版本的 PHP,因为从本质上讲,Drupal 正在运行在这个容器上,并与 WEB_IMAGEDB_IMAGE 容器进行编排,这些容器在幕后自动联网。有关更多信息,请参阅 Docksal 网站上的内容。

通过 PhpMyAdmin 访问数据库

  • 您可以通过导航到 http://pma.{YOUR_DOCKSAL_SITE} 来访问 PhpMyAdmin,将 {YOUR_DOCKSAL_SITE} 替换为站点 URL。

通过 SequelPro 访问数据库

  • 如果您已安装 SequelPro,可以从站点的 docroot 运行 fin sequelpro,它将在 SequelPro 中打开数据库!

访问 MailHog

  • 您可以通过导航到 http://mail.{YOUR_DOCKSAL_SITE} 来访问 MailHog,将 {YOUR_DOCKSAL_SITE} 替换为站点 URL。

覆盖 PHP / MySQL 设置

  • 根据需要可以覆盖 PHP 设置。一些示例包含在 example-php-mysql-overrides 文件夹中。
  • Docksal 会查找 .docksal/etc/php 中的 PHP 覆盖项 - 更多信息,请参阅 Docksal 文档
  • Docksal 会查找 .docksal/etc/mysql 中的 MySQL 覆盖项 - 更多信息,请参阅 Docksal 文档

XDebug

这应提供“开箱即用”的 xdebugging 功能 测试步骤

  • XDEBUG_ENABLED=1 添加到您的 docksal-local.env,然后运行 fin up 来重新加载启用 XDebug 的容器。如果您尚未设置 php.ini,则添加一个,或更新 /etc/php/php.ini 中的设置以使用所需的 XDebug 首选设置(请参阅 .docksal/example-php-mysql-overrides/etc/php/php.ini),然后运行 fin project restart 以应用新设置。注意:有 XDEBUG_ENABLED=1 会使性能降低,因此如果未积极使用,请考虑将其设置为 0 并运行 fin up 以卸载它。
  • 下载 VSCode 调试扩展
  • 转到“调试”选项卡并开始调试:image
  • 当您在执行该代码的位置刷新网站时,它应该会跳转至 vscode image

关于 composer.json 需求的说明

  • 由于我们目前的 composer 框架存在限制,任何非根包的包都不会安装其 require-dev 依赖。因为我们使用 utexas_profile 作为包,所以定义在其中的 require-dev 包不会安装,因为 utexas_profile 不是根包。这就是为什么我们将它们复制到这个仓库中的 requirements,这样当安装此包时,它会负责正确安装测试和其他特定开发活动的依赖项。