切换主题
yoyoboot admin create
创建 capabilities 已暴露的 Admin 标准模块或共享包时使用,统一构建计划、校验并事务化写入。先使用 dry-run 查看计划,再按正式合同补齐业务内容与验证。
基本用法
text
yoyoboot admin create <frontend-module|package> [options] [--dry-run] [--json]在 YoyoBoot 源码仓库中运行
先查看创建计划;示例不会写文件。目录或包名已存在时需替换为新的合法名称。
text
pnpm --dir tools/yoyoboot-cli run cli -- admin create package --kind ts --name reference-example --package-name @yoyoboot/reference-example --dry-run --json参数
| 参数 | 必填 | 说明 |
|---|---|---|
recipe | 是 | recipe 名称,当前支持:frontend-module、package。 |
--json | 否 | 以 JSON 输出完整结果信封,供机器读取。 |
--dry-run | 否 | 仅展示计划变更,不写入任何文件(仅作者命令)。 |
--help | 否 | 展示帮助;yoyoboot --help / yoyoboot <command> --help。 |
--repo <path> | 否 | 显式指定仓库查找起点;缺省从当前工作目录向上查找。 |
frontend-module
生成 standard-crud 前端模块作者面(manifest.ts + schema.ts)并自动接线 app/manifests.ts。
text
yoyoboot admin create frontend-module --module <kebab> --resource <camel> --route </path> --title <标题> --permission-prefix <前缀> [--description <text>] [--order <integer>] [--group <text>] [--kind standard-crud] [--datasource <id>] [--virtualization fixed] [--dry-run] [--json]| 参数 | 必填 | 说明 |
|---|---|---|
--kind <value> | 否 | 配方种类,缺省 standard-crud。 候选值:standard-crud。 |
--module <value> | 是 | 模块 key(kebab-case),同时作为 app 下模块目录名。 |
--resource <value> | 是 | 资源 key(camelCase),必须存在于生成的 CRUD resource catalog,例如 measuringUnit。 |
--datasource <value> | 否 | 显式指定 datasourceId;缺省为 <camel(moduleKey)>.<resourceKey>,schema 与 manifest 共用同一推导。 |
--virtualization <value> | 否 | 显式开启固定行虚拟化;省略时关闭,像素预算由 Data 管理。 候选值:fixed。 |
--route <value> | 是 | 路由路径,以 / 开头。 |
--title <value> | 是 | 页面标题。 |
--description <value> | 否 | 描述,缺省沿用 title。 |
--order <value> | 否 | 菜单排序,缺省 60。 |
--group <value> | 否 | 菜单分组名,缺省「业务模块」。 |
--permission-prefix <value> | 是 | 权限前缀,例如 Pages.Administration.BasicData.MeasuringUnits;派生权限必须已在 capability catalog。 |
package
生成标准纯 TS 共享包骨架(package.json / tsconfig 对 / src 根入口 / smoke test / README),并把新包纳入 workspace 的 pnpm-lock.yaml importers。
text
yoyoboot admin create package --kind ts --name <kebab> --package-name @yoyoboot/<name> [--description <text>] [--dry-run] [--json]| 参数 | 必填 | 说明 |
|---|---|---|
--kind <value> | 是 | 配方 kind;当前仅支持标准纯 TS 包骨架。 候选值:ts。 |
--name <value> | 是 | 包目录名(kebab-case),生成在 packages/yoyo-admin/ 下。 |
--package-name <value> | 是 | npm 包名,必须位于 @yoyoboot/ 作用域下。 |
--description <value> | 否 | 包描述,缺省「Yoyo Admin 共享包。」 |
示例
固定示例仓库中的返回结果
text
yoyoboot admin create package --kind ts --name reference-example --package-name @yoyoboot/reference-example --dry-run --json此命令针对固定示例仓库。下面只展示公开字段投影,不是当前 checkout 的完整输出。
json
{
"command": "create package",
"status": "ok",
"data": {
"kind": "ts",
"directory": "packages/yoyo-admin/reference-example",
"packageName": "@yoyoboot/reference-example",
"summary": {
"creates": 6,
"updates": 0
}
}
}固定示例仓库中的返回结果
text
yoyoboot admin create frontend-module --module reference-example --resource measuringUnit --route /reference-example/list --title 示例 --permission-prefix Pages.Administration.BasicData.MeasuringUnits --dry-run --json此命令针对固定示例仓库。下面只展示公开字段投影,不是当前 checkout 的完整输出。
json
{
"command": "create frontend-module",
"status": "ok",
"data": {
"moduleKey": "reference-example",
"summary": {
"creates": 2,
"updates": 1
}
}
}返回结果
dry-run 返回完整 FsPlan;真实创建还返回已写入目标与 package lockfile 状态。
主要字段
| 字段 | 说明 |
|---|---|
command | 实际结果命令名;Admin 保留子命令名,入口捕获异常时为 cli。 |
status | ok / warn / error;同时检查退出码及诊断码。warn 可以退出 0。 |
findings[] | 诊断项包含 code、status、message,可选 detail;机器使用 code 分支,不解析消息。 |
source | JSON 顶层命令实现来源,包含 kind / path / owner。 |
data | 命令结果;入口捕获失败时可能缺省,部分诊断失败仍保留结果。 |
data.changes[] | 每项 kind=create/update、仓库相对 path、完整 content、origin;update 还包含 summary。 |
data.summary | creates / updates 数量。 |
data.directory | 生成目标的仓库相对目录。 |
data.kind | package recipe:固定为 ts。 |
data.packageName | package recipe:npm 包名。 |
data.moduleKey | frontend-module recipe 的模块 key。 |
data.pageKey | frontend-module recipe 的页面 key。 |
data.datasourceId | frontend-module recipe 的 datasourceId。 |
data.shape | frontend-module:rowKey、formFields、canCreate、canUpdate、canSetEnabled、canRemove,来自正式 CRUD 合同。 |
data.permissions | frontend-module:page 为权限字符串数组;create、update、setEnabled、remove 是可选权限字符串,操作不支持时相应字段省略。 |
data.written | 真实成功创建后返回写入路径数组;dry-run 不返回。 |
data.lockfileChanged | 仅 package 的真实成功执行返回;是否刷新 workspace lockfile。 |
使用说明
- 仓库根使用
pnpm --dir tools/yoyoboot-cli run cli -- <命令参数>;已完成构建时也可使用node tools/yoyoboot-cli/dist/bin.js <命令参数>。 - JSON 示例来自固定示例仓库的公开投影,省略实现来源、规则文件位置及大段内容;
<...>是明确的环境占位符。完整字段见返回结果表,实际内容以当前工作树为准。 - 全局参数严格解析:未知、重复、缺值参数返回退出码 2;
--help输出文本,即使同时指定--json。 - 此结果没有独立的
data.schemaVersion;不要把来源 catalog 版本或 Reference metadata 版本当成结果版本。 - 只使用 capabilities 当前暴露的 recipe;参数是否必填以各配方表为准,不能把不同配方的参数混用。
- 公开 JSON 仅展示计划摘要,省略 changes 的生成文件内容。dry-run 只构造计划,不执行落盘 preflight;真实执行前仍可能发现已有目标或接线冲突。
- 真实 frontend-module 创建写入 manifest/schema 并接线组合入口;package 创建写入六个文件,刷新 workspace lockfile,不代跑完整安装。
- 计划、preflight、事务化写入按顺序执行;package lockfile 刷新失败会撤销创建。生成成功不等于业务页面完成,需补业务字段并运行 owner 检查。
- 包名必须为 @yoyoboot/ 作用域;目录/module 为合法 kebab-case;resource 为真实 camelCase key;route 以 / 开头;权限前缀来自正式 catalog。
退出码
| Exit code | 含义 |
|---|---|
0 | 成功或仅有警告;警告仍需阅读。 |
2 | 预期失败:参数、仓库或领域条件不满足,或严格检查未通过。 |
1 | 未预期程序错误。 |
常见错误
permission-prefix-not-found
没有权限匹配该前缀。
处理方式:使用 admin inspect permissions 查询真实前缀。
crud-catalog-missing
正式 CRUD catalog 缺失。
处理方式:使用宿主正式 API 生成入口恢复 catalog。
crud-catalog-unreadable
CRUD catalog 不可解析或条目残缺。
处理方式:修复正式输入并重新生成,不能手写替代合同。
crud-catalog-empty
CRUD catalog 无资源。
处理方式:核对正式输入与生成器输出。
capability-catalog-missing
权限 catalog 缺失。
处理方式:使用 CapabilityExporter 恢复正式 catalog。
capability-catalog-unreadable
权限 catalog 不可解析或残缺。
处理方式:修复权限正式来源并重新生成。
capability-catalog-empty
权限 catalog 无权限。
处理方式:检查权限 Provider 和 exporter 输入。
unknown-resource-key
资源 key 不存在。
处理方式:先运行 admin inspect resources,选择真实 key。
unknown-permission-key
权限名或前缀不存在。
处理方式:先运行 admin inspect permissions;新权限先由正式 Provider 定义。
unknown-recipe
recipe 不存在或未指定。
处理方式:实时读取 admin capabilities。
unsupported-recipe-kind
kind 不受支持。
处理方式:使用该 recipe 当前暴露的 kinds。
package-directory-exists
包目录已存在,拒绝覆盖。
处理方式:修改既有包或选择新的目录名。
duplicate-package-name
workspace 已使用该包名。
处理方式:选择唯一的 @yoyoboot/ 包名。
unknown-permission-key
派生权限不在正式 catalog。
处理方式:核对正式权限 Provider 和 catalog,不创建虚假权限。
相关命令
Reference 合同版本:
1.0.0结果合同版本:未独立版本化(实际结果没有 data.schemaVersion)
源码产品版本:
10.5.7(不代表 registry 发布状态)。