wp-forge/wp-scaffolding-tool

WordPress的零配置脚手架工具。

1.1.1 2022-01-06 15:17 UTC

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 initwp 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"
    }
  ]
}