wp-cli / scaffold-package-command
使用功能测试、完整的 README.md 和更多内容来构建 WP-CLI 命令。
Requires
- php: ^5.6 || ^7 || ^8
- wp-cli/package-command: ^2
- wp-cli/scaffold-command: ^2
- wp-cli/wp-cli: ^2.11
Requires (Dev)
README
使用功能测试、完整的 README.md 和更多内容来构建 WP-CLI 命令。
使用
此包实现了以下命令
wp scaffold package
生成基本 WP-CLI 命令所需文件。
wp scaffold package <name> [--description=<description>] [--homepage=<homepage>] [--dir=<dir>] [--license=<license>] [--require_wp_cli=<version>] [--require_wp_cli_tests=<version>] [--skip-tests] [--skip-readme] [--skip-github] [--skip-install] [--force]
默认行为是创建以下文件
- command.php
- composer.json(包含包名、描述和许可协议)
- .gitignore、.editorconfig 和 .distignore
- README.md(通过 wp scaffold package-readme 生成)
- 测试框架(通过 wp scaffold package-tests 生成)
除非指定 --dir=<dir>
,否则命令包将放置在 WP-CLI packages/local/
目录中。
选项
<name>
Name for the new package. Expects <author>/<package> (e.g. 'wp-cli/scaffold-package').
[--description=<description>]
Human-readable description for the package.
[--homepage=<homepage>]
Homepage for the package. Defaults to 'https://github.com/<name>'
[--dir=<dir>]
Specify a destination directory for the command. Defaults to WP-CLI's `packages/local/` directory.
[--license=<license>]
License for the package.
---
default: MIT
---
[--require_wp_cli=<version>]
Required WP-CLI version for the package.
---
default: ^2.5
---
[--require_wp_cli_tests=<version>]
Required WP-CLI testing framework version for the package.
---
default: ^3.0.11
---
[--skip-tests]
Don't generate files for integration testing.
[--skip-readme]
Don't generate a README.md for the package.
[--skip-github]
Don't generate GitHub issue and pull request templates.
[--skip-install]
Don't install the package after scaffolding.
[--force]
Overwrite files that already exist.
wp scaffold package-tests
为您的命令生成 Behat 测试文件。
wp scaffold package-tests <dir> [--ci=<provider>] [--force]
WP-CLI 使用基于 Behat 的测试框架,您也应该使用。此命令会生成您需要的所有文件。功能测试是高质量、可维护命令的必要组成部分。Behat 作为测试框架是一个很好的选择,因为它
- 编写新测试很容易,这意味着它们确实会被编写。
- 测试与您的命令的交互方式与用户与您的命令的交互方式相同,并且它们以人类可读的方式描述了命令的预期工作方式。
Behat 测试位于您的项目的 features/
目录中。当您使用此命令时,它会生成一个默认测试,如下所示
Feature: Test that WP-CLI loads.
Scenario: WP-CLI loads for your tests
Given a WP install
When I run `wp eval 'echo "Hello world.";'`
Then STDOUT should contain:
"""
Hello world.
"""
功能测试通常遵循以下模式
- 给定 一些背景信息,
- 当 用户执行特定操作时,
- 那么 最终结果应该是 X(以及 Y 和 Z)。
查看所有可用的定义 Behat 步骤,使用 behat -dl
Given /^an empty directory$/
Given /^an empty cache/
Given /^an? ([^\s]+) file:$/
Given /^"([^"]+)" replaced with "([^"]+)" in the ([^\s]+) file$/
此命令生成的文件包括
.travis.yml
是 Travis CI 的配置文件。bin/install-package-tests.sh
将配置您的环境以运行测试。bin/test.sh
是一个测试运行器,它尊重上下文 Behat 标签。features/load-wp-cli.feature
是一个基本测试,以确认 WP-CLI 可以加载。features/bootstrap
、features/steps
、features/extra
是 Behat 配置文件。
运行 bin/install-package-tests.sh
后,您可以使用 ./vendor/bin/behat
运行测试。如果您在多个项目中使用 Behat 而不想为每个项目安装一个副本,可以使用 composer global require behat/behat
在您的机器上全局安装 Behat。请确保 ~/.composer/vendor/bin
也已添加到您的 $PATH
。完成这些后,您可以通过调用 behat
运行项目的测试。
对于 Travis CI,包目录中具有特殊名称的文件可以用于修改生成的 .travis.yml
,其中 <tag>
是 'cache'、'env'、'matrix'、'before_install'、'install'、'before_script' 或 'script' 之一
travis-<tag>.yml
- 用于<tag>
的内容(如果有,则忽略以下内容)travis-<tag>-append.yml
- 追加到生成的<tag>
的内容
您还可以使用文件追加到生成的 .travis.yml
travis-append.yml
- 追加到生成的.travis.yml
的内容
环境
文件 features/bootstrap/FeatureContext.php
期望 WP_CLI_BIN_DIR 环境变量。
WP-CLI Behat框架使用Behat ~2.5,该版本通过Composer安装。
选项
<dir>
Directory path to an existing package to generate tests for.
[--ci=<provider>]
Create a configuration file for a specific CI provider.
---
default: travis
options:
- travis
- circle
- github
---
[--force]
Overwrite files that already exist.
示例
# Generate files for writing Behat tests.
$ wp scaffold package-tests /path/to/command/dir/
Success: Created package test files.
wp scaffold package-readme
为您的命令生成README.md。
wp scaffold package-readme <dir> [--force] [--branch=<branch>]
根据您的WP-CLI包的composer.json文件创建包含使用、安装和贡献说明的README.md。在项目开始时运行此命令,并且每次您的使用文档更改时也运行。
这些特定命令的文档是基于composer.json -> 'extra' -> 'commands' 生成的。例如,此包的composer.json包括
{
"name": "wp-cli/scaffold-package-command",
// [...]
"extra": {
"commands": [
"scaffold package",
"scaffold package-tests",
"scaffold package-readme"
]
}
}
您还可以通过composer.json -> 'extra' -> 'readme' 般地自定义README.md的渲染。例如,运行command/hook的composer.json包括
{
"extra": {
"commands": [
"hook"
],
"readme": {
"shields": [
"[](https://travis-ci.org/runcommand/reset-password)"
],
"sections": [
"Using",
"Installing",
"Support"
],
"support": {
"body": "https://raw.githubusercontent.com/runcommand/runcommand-theme/master/bin/readme-partials/support-open-source.md"
},
"show_powered_by": false
}
}
}
在这个例子中
- "shields"支持显示任意图像作为徽章。
- "sections"允许定义任意部分(而不是默认的Using、Installing和Contributing)。
- "support" -> "body"使用远程Markdown文件作为部分内容。这也可以是本地文件路径或字符串。
- "show_powered_by"在readme末尾显示或隐藏Powered By提及。
对于部分,支持"pre"、"body"和"post"。示例
"support": {
"pre": "highlight.md",
"body": "https://raw.githubusercontent.com/runcommand/runcommand-theme/master/bin/readme-partials/support-open-source.md",
"post": "This is additional text to show after main body content."
},
在这个例子中
- "pre"内容是从本地highlight.md文件中提取的。
- "body"内容是从远程URL提取的。
- "post"是一个字符串。
选项
<dir>
Directory path to an existing package to generate a readme for.
[--force]
Overwrite the readme if it already exists.
[--branch=<branch>]
Name of default branch of the underlying repository. Defaults to master.
wp scaffold package-github
为您的命令生成GitHub配置文件。
wp scaffold package-github <dir> [--force]
创建各种文件以更好地管理您的GitHub项目。这些文件包括
.github/ISSUE_TEMPLATE
- 当用户打开新问题时显示的文本。.github/PULL_REQUEST_TEMPLATE
- 当用户提交拉取请求时显示的文本。.github/settings.yml
- Probot设置应用的配置文件。
选项
<dir>
Directory path to an existing package to generate GitHub configuration for.
[--force]
Overwrite files that already exist.
安装
安装此包需要WP-CLI v2.11或更高版本。使用wp cli update
更新到最新稳定版本。
更新后,您可以使用以下命令安装此包的最新稳定版本
wp package install wp-cli/scaffold-package-command:@stable
要安装此包的最新开发版本,请使用以下命令代替
wp package install wp-cli/scaffold-package-command:dev-main
贡献
我们感谢您主动为这个项目做出贡献。
贡献不仅限于代码。我们鼓励您以最适合您能力的方式贡献,例如编写教程、在您当地的聚会中进行演示、帮助其他用户解决支持问题或修订我们的文档。
有关更详细的介绍,请查看WP-CLI的贡献指南。此包遵循那些政策和指南。
报告错误
认为您发现了一个错误?我们很乐意您帮助我们修复它。
在创建新问题之前,您应该搜索现有问题,看看是否有现有的解决方案,或者它是否已在较新版本中修复。
在搜索之后,如果您发现没有开放或修复的问题与您的错误相关,请创建新问题。请提供尽可能多的详细信息,并在可能的情况下提供清晰的复现步骤。有关更多指导,请查看我们的错误报告文档。
创建拉取请求
想要贡献一个新功能?请首先打开新问题来讨论该功能是否适合项目。
一旦您决定投入时间看到您的拉取请求通过,请遵循我们创建拉取请求的指南以确保这是一个愉快的体验。请参见"设置"以了解在本地工作于此包的详细信息。
支持
GitHub 问题不是用于一般支持问题的,但您可以尝试其他途径:https://wp-cli.org/#support
本 README.md 文件是通过项目代码库动态生成的,使用 wp scaffold package-readme
命令(文档)。如需建议更改,请提交针对代码库对应部分的拉取请求。