跳转正文

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。
statusok / warn / error;同时检查退出码及诊断码。warn 可以退出 0。
findings[]诊断项包含 code、status、message,可选 detail;机器使用 code 分支,不解析消息。
sourceJSON 顶层命令实现来源,包含 kind / path / owner。
data命令结果;入口捕获失败时可能缺省,部分诊断失败仍保留结果。
data.changes[]每项 kind=create/update、仓库相对 path、完整 content、origin;update 还包含 summary。
data.summarycreates / updates 数量。
data.directory生成目标的仓库相对目录。
data.kindpackage recipe:固定为 ts。
data.packageNamepackage recipe:npm 包名。
data.moduleKeyfrontend-module recipe 的模块 key。
data.pageKeyfrontend-module recipe 的页面 key。
data.datasourceIdfrontend-module recipe 的 datasourceId。
data.shapefrontend-module:rowKey、formFields、canCreate、canUpdate、canSetEnabled、canRemove,来自正式 CRUD 合同。
data.permissionsfrontend-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,不创建虚假权限。

相关命令 ​

YoyoBoot · 从真实项目走向可复用能力