thinkshout/ts-wordpress-composer

此包的最新版本(1.0.1)没有可用的许可证信息。

ThinkShout 为 Pantheon + Composer 的 WordPress 项目模板

1.0.1 2017-11-29 20:21 UTC

README

CircleCI

此仓库是使用 Composer、持续集成(CI)、自动化测试和 Pantheon 的现代 WordPress 工作流的参考实现和起始状态。尽管这是一个良好的起点,但您仍需根据项目需求自定义和维护 CI/测试设置。

此仓库打算由 Terminus Build Tools 插件 单次复制,但也可以用作模板。它不应直接克隆或分支。

Terminus Build Tools 插件将构建一个新项目,包括

  • Git 仓库
  • 免费的 Pantheon 沙箱站点
  • 持续集成配置/凭证设置

有关创建新项目的更多详细信息和使用说明,请参阅 Terminus Build Tools 插件

重要文件和目录

/web

由于 pantheon.yml 中的配置,Pantheon 将从 /web 子目录提供网站服务。这对于基于 Composer 的工作流是必要的。将您的网站放在此子目录中还可以使与您的项目相关的测试、脚本和其他文件存储在您的存储库中,而不会污染您的网络文档根或从 Pantheon 供网络访问。如果您的版本控制项目是公开的,它们可能仍然可以从您的版本控制项目访问。有关详细信息,请参阅 pantheon.yml 文档

/web/wp

即使在 /web 目录中,您也可能注意到其他目录和文件与默认 WordPress 安装的位置不同。WordPress 允许将 WordPress 核心安装在它自己的目录中,这对于使用 Composer 安装 WordPress 是必要的。

请参阅 /web/wp-config.php 了解关键设置,例如必须更新的 WP_SITEURL,以确保 WordPress 核心在重定位的 /web/wp 目录中正常运行。仓库中目录的整体布局灵感来源于,但并不完全映射 Bedrock

composer.json

此项目使用 Composer 来管理第三方 PHP 依赖项。

应使用 composer.json 中的 require 部分来指定您的网络项目需要的任何依赖项,即使这些依赖项可能仅用于非生产环境。所有 require 中的依赖项都将推送到 Pantheon。

应使用 require-dev 部分来指定不是网络应用程序的一部分,但构建或测试项目所必需的依赖项。一些示例是 php_codesnifferphpunit。开发依赖项将不会部署到 Pantheon。

如果您只是在此 GitHub 仓库中浏览,您可能看不到上述提到的某些目录,例如 web/wp。这是因为 WordPress 核心和其插件是通过 Composer 安装的,并在 .gitignore 文件中被忽略。

本项目使用自定义的,Pantheon 的 WordPress Composer 版本 作为 WordPress 核心的源。

第三方 WordPress 依赖项(如插件和主题)通过 composer.json 添加到项目中。 composer.lock 文件记录了依赖项的确切版本。使用 Composer installer-paths 确保WordPress依赖项被下载到适当的目录。

非 WordPress 依赖项下载到 /vendor 目录。

.ci

.ci 目录用于存储在持续集成上运行的脚本。特定提供者的配置文件(如 .circle/config.yml.gitlab-ci.yml)使用这些脚本。

根据其功能,脚本组织在 .ci 的子目录中:builddeploytest

构建脚本 .ci/build

构建适合部署的工件步骤。根据需要,您可以在此处添加其他构建脚本,例如安装 Node 依赖项。

  • .ci/build/php 使用 Composer 安装 PHP 依赖项

构建脚本 .ci/deploy

用于促进代码部署到 Pantheon 的脚本。

  • .ci/deploy/pantheon/create-multidev 为除默认 Git 分支之外的其他分支创建一个新的 Pantheon multidev 环境
  • .ci/deploy/pantheon/dev-multidev 根据Git分支将构建的工件部署到 Pantheon 的 dev 或 multidev 环境

自动化测试脚本 .ci/tests

运行自动化测试的脚本。根据您的测试需求,您可以在此处添加或删除脚本。

静态测试 .ci/test/statictests/unit 静态测试在不执行代码的情况下分析代码。它在检测语法错误方面表现良好,但不能检测功能。

  • .ci/test/static/run 使用 PHP CodeSnifferWordPress 编码标准 以及 PHP 语法检查 运行。
  • tests/unit/bootstrap.php 引导 Composer 自动加载器
  • tests/unit/TestAssert.php 一个单元测试示例。需要在 tests/unit 中创建特定于项目的测试文件。

视觉回归测试 .ci/test/visual-regression 视觉回归测试使用无头浏览器对网页进行截图并比较视觉差异。

  • .ci/test/visual-regression/run 运行 BackstopJS 视觉回归测试。
  • .ci/test/visual-regression/backstopConfig.js BackstopJS 配置文件。在此处设置的设置需要根据您的项目进行更新。例如,pathsToTest 变量决定了要测试的 URL。

Behat 测试 .ci/test/behattests/behat Behat 是一个用 PHP 编写的接受/端到端测试框架。它允许在 Pantheon 基础设施上测试完全构建的 WordPress 网站。使用 WordHat 帮助集成 Behat 和 WordPress。

  • .ci/test/behat/initialize 从 Behat 测试中删除任何现有的 WordPress 用户,并创建要测试的环境的备份
  • .ci/test/behat/runBEHAT_PARAMS 环境变量设置为 Behat 所需的动态信息,并通过 Terminus 配置它使用 wp-cli,创建必要的 WordPress 用户,启动无头 Chrome,并运行 Behat
  • .ci/test/behat/cleanup 恢复先前制作的数据库备份,删除用于 Behat 测试的 WordPress 用户,并保存 Behat 捕获的截图
  • tests/behat/behat-pantheon.yml 与运行针对 Pantheon 网站测试的 Behat 配置文件兼容
  • tests/behat/tests/behat/features Behat 测试文件(以 .feature 扩展名)应存储的位置。提供的示例测试需要用项目特定的测试替换。
    • tests/behat/tests/behat/features/visit-homepage.feature 一个 Behat 测试文件,它访问主页并验证 200 响应
    • tests/behat/tests/behat/features/admin-login.feature 一个 Behat 测试文件,它以管理员身份登录 WordPress 控制面板并验证对新用户创建的访问
    • tests/behat/tests/behat/features/admin-login.feature 一个 Behat 测试文件,它以管理员身份登录 WordPress 控制面板,更新 blognameblogdescription 设置,清除 Pantheon 缓存,访问主页,并验证更新的博客名称和描述出现。

使用 Lando 在本地工作

要开始使用 Lando 进行本地开发,请完成以下一次性步骤。请注意,Lando 是一个独立的产品,并由 Pantheon 支持。有关进一步的帮助,请参阅 Lando 文档

  • 安装 Lando(如果尚未安装)。
  • 从 GitHub(或 GitLab 或 BitBucket)在本地克隆您的项目存储库。
  • 根据 WordPress 配方,手动创建一个 .lando.yml 文件,其中包含您首选的配置。
  • 运行 lando start 以启动 Lando。
    • 保存本地网站 URL。它应类似于 https://<PROJECT_NAME>.lndo.site
  • 运行 lando composer install --no-ansi --no-interaction --optimize-autoloader --no-progress 以下载依赖项
  • 运行 lando pull --code=none 以从 Pantheon 下载媒体文件和数据库。
  • 访问上面保存的本地网站 URL。

您现在应该能够在本地编辑您的网站。上述步骤在后续启动时不需要完成。您可以使用 lando stop 停止 Lando,并使用 lando start 重新启动它。

警告:不要在 Lando 和 Pantheon 之间直接推送/拉取代码。所有代码都应推送到 GitHub,并通过持续集成服务(如 CircleCI)部署到 Pantheon。

应在不支持主机机器的情况下在 Lando 中运行 Composer、Terminus 和 wp-cli 命令。这是通过在所需命令前加上 lando 来完成的。例如,在更改 composer.json 之后,运行 lando composer update 而不是 composer update