ucomm / wp-theme-project-boilerplate
WordPress主题搭建模板。
Requires
- uconn/banner: dev-master
Requires (Dev)
- codeception/codeception: ~4.1.21
- codeception/module-asserts: ^1.0
- codeception/module-cli: ^1.0
- codeception/module-db: ^1.0
- codeception/module-filesystem: ^1.0
- codeception/module-phpbrowser: ^1.0
- codeception/module-webdriver: ^1.0
- codeception/util-universalframework: ^1.0
- composer/installers: ^1.11.0
- johnpbloch/wordpress: @stable
- lucatume/wp-browser: ^2.4
- wpackagist-plugin/query-monitor: ^3.6.5
- wpackagist-plugin/wordpress-importer: dev-trunk
- wpackagist-theme/twentytwenty: ^1.5
README
请参阅我们通过Basecamp的正在进行中的文档,了解如何使用这些模板: Basecamp Docs
该仓库作为一个WordPress主题模板,与composer、docker和本地构建工具配合良好。
主题文件非常简单,旨在作为任何主题的起点。它不是基于任何父主题,如Cornerstone或Beaver Builder主题。在这个仓库中,您不会找到自定义选项、菜单添加等示例。这是一个非常基础的起点。
开始使用
因此,您想使用模板创建一个主题。为此,您需要在机器上安装一些东西
提前为需要在您的机器上安装所有这些工具道歉。长远目标是消除所有这些要求,除了Docker。欢迎提交拉取请求(
您不需要以任何方式克隆此项目即可开始主题开发。相反,以下操作应在创建新主题时执行
composer create-project ucomm/wp-theme-project-boilerplate <new-theme-name>
cd <new-theme-name>
composer install
nvm use
npm install
composer create-project 命令将通过 Packagist 引用 此仓库。
接下来,您应该在模板目录上运行搜索替换,以包含您的主题名称而不是模板。
这将是一个合适的查找/替换操作,用于语言命名空间
查找:theme-boilerplate
替换:<your-theme-slug>
这将是一个合适的查找/替换操作,用于PHP命名空间
查找:ThemeBoilerplate
替换:<Your-Theme-Namespace>
**接下来,从 .gitignore 中删除 `.lock` 条目。这仅用于在此模板上开发,因为正常主题应锁定依赖项。**
最后,编辑 style.css 以包含适当的 WordPress 主题元数据。
开始开发/查看预览
docker-compose up
nvm use
npm run dev
open https://
本地资产开发
该模板使用webpack处理JS/CSS资产开发。Webpack有时确实很复杂,但它:处理各种用例良好,正在积极开发中,具有良好的文档和示例。我们会永远使用它吗?可能不会。要开始,请打开另一个终端窗口。
nvm use
npm run dev
查看项目。
此项目将在 localhost 上可用。
CSS和JS资产在本地-dev容器和Web服务器之间共享。请参阅docker-compose文件了解它们是如何挂载/共享的。
调试和测试
调试
本仓库允许使用VSCode PHP Debug 扩展进行调试。仓库中包含一个用于参考的示例launch.json文件。创建一个新的launch.json文件,复制粘贴内容并修改以匹配主题名称。之后,您就可以运行xdebug了!
需要更多详细信息?xdebug功能是通过基于官方WordPress docker镜像的我们自定义的docker镜像提供的。
测试
应使用Codeception和wp-browser测试框架创建PHP测试。请包含测试!它们虽然会占用一些开发时间,但可以节省大量时间(和尴尬)。
要查看所有可能的Codeception命令,请运行./vendor/bin/codecept list。要运行特定测试,请使用./vendor/bin/codecept run [suite-name] [test-name],例如./vendor/bin/codecept run acceptance MyAcceptanceTest
调试Docker
您可以直接从shell(只要容器正在运行)访问Docker容器,例如
docker-compose exec web bash
添加插件/依赖项
此项目使用composer作为PHP的依赖项管理工具。它还使用NPM/Yarn作为本地构建工具的依赖项管理工具,用于编译/压缩CSS/JS。
包可以在以下位置找到
要添加我们的插件、主题或其他PHP依赖项,请在composer.json文件中使用以下格式
{
"repositories": [
{
"type": "composer",
"url": "https://wpackagist.org"
},
{
"type": "vcs",
"url": "git@bitbucket.org/ucomm/{dependency-name}"
}
]
}
然后运行
composer require (--dev) ucomm/{dependency-name}
是的,这使得仓库列表非常长,但更新速度非常快。
Git
我们使用git。请确保git init的默认分支名称设置为main。您可以通过查看gitconfig文件在~/.gitconfig中确认此信息。它应该看起来像这样
[init]
defaultBranch = main
如果它不是这样,请将其添加到那里或使用以下命令
git config --global init.defaultBranch main
分支策略
git flow
我们试图使用Git Flow作为我们的分支策略。虽然不是必需的,但在团队工作中很有帮助。
如果您使用git flow,请将默认git flow分支名称也设置为main。您的gitconfig文件应该看起来像这样
[gitflow "branch"]
master = main
或者运行
git config --global gitflow.branch.master main
标记
标记必须遵循semver系统。可以在git flow中使用git flow release start和git flow release finish命令添加标记。
Jenkins
构建
在Jenkins shell脚本中,要创建由webpack管理的资源,请使用以下格式
# select the correct node version
source ~/.nvm/nvm.sh
nvm use
# install dependencies quickly
npm ci
# build assets
npm run build
# remove node_modules folders
find . -name "node_modules" -type d -exec rm -rf '{}' +
自动化构建
为了确保自动推送到我们的开发服务器(s)采取以下步骤
- 创建一个新的Jenkins项目(从头开始或通过复制 - 请参阅Castor项目作为示例)
- 在bitbucket设置中,转到
Settings -> Workflow -> Webhooks并在urlhttp://ci.pr.uconn.edu:8080/bitbucket-hook/处添加到Jenkins的钩子。 - 在bitbucket设置中,转到
Settings -> General -> Access Keys并添加Jenkins ssh密钥。该密钥可以从另一个仓库复制/粘贴 - 如果此项目将被部署到Aurora沙盒或健康开发服务器,请使用ftp客户端创建与项目同名的目录。否则,部署可能会失败。