thinkshout / ts-wordpress-composer
ThinkShout 为 Pantheon + Composer 的 WordPress 项目模板
Requires
- composer/installers: ^1.3.0
- pantheon-systems/quicksilver-pushback: ^1.0
- pantheon-systems/wordpress-composer: ^4.8.2
- roots/wp-password-bcrypt: ^1.0.0
- rvtraveller/qs-composer-installer: ^1.1
- vlucas/phpdotenv: ^2.4.0
- wpackagist-plugin/pantheon-advanced-page-cache: ^0.1.4
- wpackagist-plugin/wp-native-php-sessions: ^0.6.0
- wpackagist-theme/twentyseventeen: ^1.1
Requires (Dev)
- behat/mink-goutte-driver: ^1.2
- behat/mink-selenium2-driver: ^1.3
- brain/monkey: ^1.4
- paulgibbs/behat-wordpress-extension: 0.8.0
- phpunit/phpunit: ^6.1
- roave/security-advisories: dev-master
- squizlabs/php_codesniffer: ^2.9.0
- wp-coding-standards/wpcs: dev-master
- dev-master
- 1.0.1
- dev-pantheon-systems-master
- dev-clu-2019-05-25-00-02
- dev-clu-2019-05-24-00-02
- dev-wordsesh-2019-demo
- dev-clu-2019-05-23-00-02
- dev-clu-2019-05-22-00-02
- dev-clu-2019-05-21-00-02
- dev-clu-2019-05-20-00-02
- dev-clu-2019-05-19-00-02
- dev-clu-2019-05-18-00-02
- dev-clu-2019-05-17-00-02
- dev-clu-2019-05-16-00-02
- dev-clu-2019-05-15-00-02
- dev-clu-2019-05-14-00-03
- dev-clu-2019-05-13-00-02
- dev-clu-2019-05-12-00-06
- dev-clu-2019-05-11-00-02
- dev-clu-2019-05-10-00-02
- dev-clu-2019-05-09-00-02
- dev-clu-2019-05-08-00-28
- dev-clu-2019-05-08-00-02
- dev-clu-2019-05-07-00-04
- dev-clu-2019-05-06-00-02
- dev-clu-2019-05-05-00-02
- dev-clu-2019-05-04-00-02
- dev-clu-2019-05-03-00-02
- dev-clu-2019-05-02-00-02
- dev-clu-2019-05-01-00-02
- dev-clu-2019-04-30-00-02
- dev-clu-2019-04-29-00-02
- dev-clu-2019-04-28-00-03
- dev-clu-2019-04-27-00-02
- dev-clu-2019-04-26-00-02
- dev-clu-2019-04-25-00-03
- dev-clu-2019-04-24-00-02
- dev-clu-2019-04-23-00-02
- dev-bitbucket-pipelines
- dev-wordpress-5.1.1
- dev-custom-login
- dev-update-5.1
- dev-gitlab-ci-no-pr
- dev-clu-2018-12-06-22-44
- dev-default-php72
- dev-clu-2017-10-31-18-11
- dev-readme-instructions
- dev-issue-35-quicksilver-pushback-403
- dev-behat-example-for-webinar
- dev-php-70--global-variables
- dev-php-70--pin-wordhat
- dev-php-70-plus-logic-fix
- dev-php56
- dev-dynamic-build-tools-version
- dev-packagist-test
- dev-coming-soon
- dev-old-master
This package is not auto-updated.
Last update: 2024-09-12 23:15:50 UTC
README
此仓库是使用 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_codesniffer 和 phpunit。开发依赖项将不会部署到 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 的子目录中:build、deploy 或 test。
构建脚本 .ci/build
构建适合部署的工件步骤。根据需要,您可以在此处添加其他构建脚本,例如安装 Node 依赖项。
.ci/build/php使用 Composer 安装 PHP 依赖项
构建脚本 .ci/deploy
用于促进代码部署到 Pantheon 的脚本。
.ci/deploy/pantheon/create-multidev为除默认 Git 分支之外的其他分支创建一个新的 Pantheon multidev 环境- 请注意,并非所有用户都有 multidev 访问权限。有关详细信息,请参阅 multidev 常见问题解答文档。
.ci/deploy/pantheon/dev-multidev根据Git分支将构建的工件部署到 Pantheon 的dev或 multidev 环境
自动化测试脚本 .ci/tests
运行自动化测试的脚本。根据您的测试需求,您可以在此处添加或删除脚本。
静态测试 .ci/test/static 和 tests/unit 静态测试在不执行代码的情况下分析代码。它在检测语法错误方面表现良好,但不能检测功能。
.ci/test/static/run使用 PHP CodeSniffer 和 WordPress 编码标准 以及 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.jsBackstopJS 配置文件。在此处设置的设置需要根据您的项目进行更新。例如,pathsToTest变量决定了要测试的 URL。
Behat 测试 .ci/test/behat 和 tests/behat Behat 是一个用 PHP 编写的接受/端到端测试框架。它允许在 Pantheon 基础设施上测试完全构建的 WordPress 网站。使用 WordHat 帮助集成 Behat 和 WordPress。
.ci/test/behat/initialize从 Behat 测试中删除任何现有的 WordPress 用户,并创建要测试的环境的备份.ci/test/behat/run将BEHAT_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/featuresBehat 测试文件(以.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 控制面板,更新blogname和blogdescription设置,清除 Pantheon 缓存,访问主页,并验证更新的博客名称和描述出现。
使用 Lando 在本地工作
要开始使用 Lando 进行本地开发,请完成以下一次性步骤。请注意,Lando 是一个独立的产品,并由 Pantheon 支持。有关进一步的帮助,请参阅 Lando 文档。
- 安装 Lando(如果尚未安装)。
- 从 GitHub(或 GitLab 或 BitBucket)在本地克隆您的项目存储库。
- 根据 WordPress 配方,手动创建一个
.lando.yml文件,其中包含您首选的配置。 - 运行
lando start以启动 Lando。- 保存本地网站 URL。它应类似于
https://<PROJECT_NAME>.lndo.site。
- 保存本地网站 URL。它应类似于
- 运行
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。