wp-forge / wp-scaffolding-tool
WordPress的零配置脚手架工具。
Requires
- php: >=7.0
- league/climate: ^3.7
- league/flysystem: ^2.1
- mustache/mustache: ^2.13
- wp-forge/container: ^1.0
- wp-forge/data-store: ^1.1
- wp-forge/helpers: ^2.0
- wpscholar/collection: ^1.0
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-22 19:16:38 UTC
README
一个专为包含在WP-CLI包中而构建的零配置*脚手架工具库。
安装
composer require wp-forge/wp-scaffolding-tool
集成
确保你的composer.json文件中的type属性设置为wp-cli-package。
通过以下代码使用Composer自动加载文件
<?php use WP_Forge\WP_Scaffolding_Tool\Package; if ( ! class_exists( 'WP_CLI' ) ) { return; } if ( file_exists( __DIR__ . '/vendor/autoload.php' ) ) { require __DIR__ . '/vendor/autoload.php'; } new Package( [ 'base_command' => 'forge', 'template_config_filename' => 'config.json', 'project_config_filename' => '.wp-forge-project.json', 'global_config_filename' => '.wp-forge.json', 'default_template_repo' => 'https://github.com/wp-forge/scaffolding-templates.git', ] );
以下值应根据您的具体使用情况进行自定义
- base_command - 基础WP-CLI命令的名称。例如,值为
forge将导致可用的命令,如wp forge init和wp forge make。 - template_config_filename - 用于脚手架模板的配置文件名称。在脚手架新实体时,此JSON文件被读取以确定用户提示和结果操作。
- project_config_filename - 项目配置文件名称。在运行
init子命令时生成。 - global_config_filename - 全局配置文件名称。
- default_template_repo - 存放脚手架模板的Git仓库URL。
用法
所有命令都由工具自动记录文档。只需输入一个可用的命令,然后加--help标志以获取更多详细信息。
获取可用命令的高级文档
wp <base_command> --help
获取特定命令的文档
wp <base_command> <subcommand> --help
可用命令
《repo》命令
列表
列出所有可用的模板仓库
wp <base_command> repo list
克隆
克隆包含脚手架模板的Git仓库,以便在本地可供工具使用。
wp <base_command> repo clone <repository_url>
在克隆仓库时,您可以可选地提供一个名称。这允许您利用包含来自不同来源的脚手架模板的多个仓库。如果您未设置名称,系统将自动使用“默认”名称。
wp <base_command> repo clone <repository_url> --as=<name>
链接
《link》命令将注册指向本地脚手架模板目录的符号链接。
要创建新的链接,运行
wp <base_command> repo link ./path/to/templates --as=<name>
更新
要更新已克隆的仓库,运行以下命令,其中name是脚手架仓库的注册名称(默认值为default)
wp <base_command> repo update <name>
其中name是运行repo clone子命令时使用的名称。
删除
要删除本地克隆的仓库,运行
wp <base_command> repo delete <name>
其中name是运行repo clone子命令时使用的名称。
《make》命令
要使用来自命名仓库的模板进行脚手架,只需在实体名称前加上您自定义的命名空间。
例如,如果您将名称设置为company,并且您想要脚手架一个wp-plugin,那么您将运行此命令
wp <base_command> make company:wp-plugin
这将确保包含company模板的仓库将检查wp-plugin脚手架。如果在请求的命名空间下找不到请求的模板,并且已配置多个模板来源,则工具将询问您是否要检查其他模板来源以查找该模板。
您还可以使用路径来利用嵌套在其他文件夹中的模板。
wp <base_command> make company:github-actions/lint-php
上述命令将在~/.wp-cli/templates/company文件夹中查找位于github-actions/lint-php目录中的模板。
《init》命令
《init》命令将提出一系列问题,并生成项目配置文件。
wp <base_command> init
在项目配置文件中找到的数据将在项目内运行命令时自动加载。如果脚手架模板请求特定信息,并且它可以在项目配置文件中找到,那么用户将不会看到请求该信息的提示。
脚手架 template 命令
列表
要列出所有可用的脚手架模板,请运行
wp <base_command> template list
创建
要创建当前目录中的新脚手架模板,请运行
wp <base_command> template create
注意: 此功能为实验性,仍在积极开发中。
脚手架 config 命令
所有子命令都将接受 --global 标志。当使用时,所有命令都将应用于全局配置文件。否则,所有命令将应用于项目配置文件。
创建
创建新配置文件
wp <base_command> config create [--global]
当使用 --global 标志时,将在用户的家目录中创建一个空的全球配置文件。
当不使用 --global 标志时,这将触发 init 命令以创建项目配置。
编辑
启动系统文件编辑器以编辑配置文件
wp <base_command> config edit [--global]
检查
检查配置文件是否具有特定值
wp <base_command> config has <key> [--global]
其中 key 是 JSON 属性的名称。可以使用点符号引用嵌套属性。
获取
从配置文件中获取值
wp <base_command> config get <key> [--global]
其中 key 是 JSON 属性的名称。可以使用点符号引用嵌套属性。
设置
在配置文件中设置值
wp <base_command> config set <key> <value> [--global]
其中 key 是 JSON 属性的名称。可以使用点符号引用嵌套属性。
value 是要设置的值。
删除
删除配置文件中的值
wp <base_command> config delete <key> [--global]
其中 key 是 JSON 属性的名称。可以使用点符号引用嵌套属性。
列表
列出配置文件中的设置
wp <base_command> config list [--global]
路径
获取配置文件的路径
wp <base_command> config path [--global]
脚手架模板
为了使用此工具,您必须首先有一个 Git 仓库,您将在其中托管您的脚手架模板。
让我们开始吧!
步骤 1: 创建一个新的 Git 仓库。
步骤 2: 在仓库中为每个您希望脚手架的项目创建一个文件夹。文件夹的名称是您将与
make命令使用的名称。
您可能想要脚手架的一些示例
- WordPress 插件
- WordPress 主题
- WordPress 网站
- 自定义帖子类型
- GitHub 动作
- 您经常使用的其他自定义代码
步骤 3: 确保您在模板文件夹中有一个模板配置文件(例如
config.json)。这将告诉 CLI 如何处理您的模板。
配置示例
一个简单的 config.json 文件可能看起来像这样
{
"directives": [
{
"action": "copy",
"from": "lint-php.yml",
"to": ".github/workflows/lint-php.yml",
"relativeTo": "projectRoot"
}
]
}
这将把模板文件夹中的 lint-php.yml 文件复制到项目根目录相对的 .github/workflows/lint-php.yml 文件。您可以提供多个复制指令以复制不仅文件,还可以复制整个目录。如果您希望路径相对于 CLI 工具正在运行的当前目录,则只需省略 relativeTo 属性或将其值设置为 workingDir。
通常,您可能希望替换模板中的占位符。为此,您必须首先从用户收集所需的信息。
您可以在 CLI 中添加一个 prompts 部分,以触发这些数据请求
{
"prompts": [
{
"message": "What is your first name?",
"name": "first_name",
"type": "input"
},
{
"message": "What country are you in?",
"name": "country",
"type": "input",
"default": "United States"
},
{
"message": "What is your favorite ice cream?",
"name": "ice_cream",
"type": "radio",
"options": [
"Chocolate",
"Vanilla",
"Strawberry"
]
},
{
"message": "Select one or more taxonomies",
"name": "taxonomies",
"type": "checkboxes",
"options": [
"Categories",
"Tags"
]
}
]
}
定义了这些提示后,您现在可以使用 name 字段作为任何模板文件中的 Mustache 占位符。您还可以在模板中引用来自项目配置文件中任何属性的名称,而无需提示用户。
您可以使用 runCommand 指令和调用 make 命令使模板利用其他模板
{
"directives": [
{
"action": "runCommand",
"command": "wp forge make github-actions/lint-js"
},
{
"action": "runCommand",
"command": "wp forge make github-actions/lint-php"
},
{
"action": "runCommand",
"command": "wp forge make github-actions/lint-yml"
}
]
}