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.js
BackstopJS 配置文件。在此处设置的设置需要根据您的项目进行更新。例如,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/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 控制面板,更新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
。