连Hub CLI
EvenHub 开发和应用管理的命令行界面. 覆盖 整个循环 开发者从终端运行: 脚手架工程、 包、 创建 应用程序,上传新建筑,邀请β测试者, 并加盖β 频道. 公众评议和出版在"门户"上停留.
两者 evenhub 财务报告和审定财务报表 eh 运行同一程序.
安装
npm install -g @evenrealities/evenhub-cli
已出版的软件包载有其编译的 JavaScript 和 Web Assembly 装包机,所以安装它 既不需要布恩,也不需要拉斯特。 支持的 Node.js 版本 是在20号、22.13号、22号、23.5号及以后的节点上.
先登录
login 提示密码,因此需要一个交互式终端。 运行
它曾经,用手:
evenhub login
地产 ~/.config/evenhub/credentials.yaml (单位:千美元)XDG_CONFIG_HOME
设定时获胜; Windows 使用 %APPDATA%只有你才能读 每一个
命令重用它们,所以脚本, CI 任务和代理从不提示. 一个过期
访问令牌自动刷新; 当刷新令牌也过期时,
命令退出 2 并请求您再次登录.
evenhub logout 无效刷新令牌服务器侧并删除本地端
文档.
两种输出模式
每个命令都接受 --json。没有它,你得到对齐,人可读
线条。 用它装上一个JSON的物体 而不是其他的 提示,
警告和进展到 stderr .
失败情况 --json 也是JSON的对象:
{"ok": false, "exit": 5, "code": 1020, "message": "...", "hint": "..."}
服务器上已更改的失败添加 partial,哪个
按名称列出这些效果:
{"ok": false, "exit": 10, "code": 1500, "message": "Description update failed", "hint": "...", "partial": {"package_id": "com.example.demo", "initial_build": "1.0.0", "app_created": true, "draft_id": "...", "description_applied": false}}
退出代码
每个代码有一个失败类型,从服务器自己的错误代码中映射出来.
| 代码 | 含义 |
|---|---|
| 0 个 | 成绩 |
| 1个 | 用法或参数错误 |
| 2个 | 未登录或两个令牌过期 |
| 3个 | 目标不存在,或者这个账户不拥有它 |
| 页:1 | 目标已经存在 |
| 页:1 | 版本被固定在一个频道上, 无法删除 |
| 6个 | 图标被拒绝 |
| 第7条 | App 发布或正在审查; 列出编辑经过审查 |
| 第8条 | 达到的限制或税率有限 |
| 第9条 | 本地步骤失败, 服务器状态不变 |
| 10个 | 网络或服务器出错 |
| 第11个 | 服务器端的更改已落地, 失败后为本地步骤 |
| 130个 | 中断 |
任何本地验证可以解决的 都会在请求发出之前解决 所以
出站 9 表示服务器状态不变,同一命令可以再次运行为
它站着。 出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出入出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出出
接受更改,失败后采取当地步骤(保存证书或
”)。 它携带
partial 在JSON有效载荷中 Completed effects: 显示
命名已登陆的每个效果; 信件和提示名称为本地步骤
修复。 修复这个步骤,而不是重放命令.
项目命令
init - 脚手架 app.json
evenhub init # ./app.json
evenhub init --directory ./my-app
evenhub init --output ./config/app.json
脚手架搭载着 min_app_version 财务报告和审定财务报表 min_sdk_version sDK 数据
释放此 CLI 发送到对面, 所以一个新鲜的项目包 不绊倒
检查地板.
pack 建立一个 .ehpk
evenhub pack app.json ./dist -o out.ehpk
evenhub pack app.json ./dist --sdk-ver 0.0.14
evenhub pack app.json ./dist --check
| 选项 | 效果 |
|---|---|
-o, --output <file> | 输出路径( 默认) out.ehpk(中文(简体) ) |
--no-ignore | 包含点文件 |
-c, --check | 检查包ID是否仍然免费 |
--sdk-ver <version> | 从 SDK 释放出地板而不是 npm latest |
--enforce-manual-version | 邮票 app.json是因为 min_app_version 写着,甚至地板下 |
在包装过程中,CLI读取了SDK的 minAppVersion 从npm和邮票它
在包装的明细表中。 数值高于 app.json 保存; 下方为
举起手来. app.json 磁盘上从未修改.
如果 npm 无法到达 CLI 警告并返回到捆绑在
释放时间。 这个值一定比登记处的要老 所以通过
--sdk-ver <version> 和最近的SDK打包时.
qr ——开发服务器QR代码
在 Even app 中侧载 Dev 模式时唯一需要的命令 .
evenhub qr
evenhub qr --url http://192.168.1.100:3000
evenhub qr --ip 192.168.1.100 --port 3000
evenhub qr --external # write a PNG and open it
evenhub qr --clear # forget the cached scheme, IP, port and path
IP是自动被检测的,最后的设置会在运行之间被记住.
账户命令
| 命令 | 目的 |
|---|---|
evenhub login [-e <email>] | 交互式登录(见上文) |
evenhub self-check | 显示登录账户、其作用和命名空间 |
evenhub logout | 无效刷新令牌并删除本地证书 |
应用命令
create ——新应用加其首作
evenhub create out.ehpk --name "My App" --tagline "One line" --icon icon.png
| 选项 | 限制 |
|---|---|
--name <text> | 1到20个字符 |
--tagline <text> | 1到50个字符 |
--description <text> 编号 : --description-file <path> | 1到2000个字符 |
--icon <file.png> | 24x24 PNG,见下文 |
--package-id <id> | 默认为 app.json 在当前目录中 |
--new-draft | 忽略缓存草稿并再次上传 |
长度以Unicode代码点来计算,所以一个CJK字符计为一.
无 --icon 应用程序得到一个占位符 输出是这样说的.
upload ——现有应用的新版本
evenhub upload out.ehpk -m "What changed"
弹出 version 内 app.json 并再次装入; 重新装入已有的
版本出入口4. -m, --changelog 需要并封顶500个字符.
update ——编辑未发布的app上市程序
evenhub update --name "New name" --tagline "New line"
evenhub update --description-file ./store.md
evenhub update --icon icon.png
CLI 直接提交列表编辑. 如果一个应用软件得到批准或发布 版本,或待审查,服务器拒绝以代码1022进行更新; cLI 保留了这个错误,并退出 7。 在门户上进行编辑.
ls ——应用,或者一个应用的构建
evenhub ls # every app on the account
evenhub ls --channels # add the beta/public pointers
evenhub ls <package_id> # every build of one app
evenhub ls <package_id> --verbose
构件由语义版本排序,所以 1.0.10 坐在这里 1.0.9。 。 。 .
裸体 ls 进行单项请求; 频道列花费每个应用程序一个请求,
这就是为什么他们坐在后面 --channels。仅限 --verbose 请求应用和
审查细节并包括高层 app 财务报告和审定财务报表 review JSON田园.
download - 找一个建筑
evenhub download 1.0.1 -o ./build.ehpk
CLI 请求服务器提供新签名的存储 URL 并获取软件包 不带任何证书.
rm - 删除一个构建或应用程序
evenhub rm 1.0.1 # one build
evenhub rm --app <package_id> --yes # the app and all of its builds
一个频道仍然指向的构造无法删除; 删除频道
先说 删除一个应用程序是不可逆的,所以它会提示,除非 --yes 通过.
分发命令
promote 财务报告和审定财务报表 delist
evenhub promote 1.0.1 --to beta
evenhub delist --from beta
promote 只处理β通道。 公共出版需求审查
当地拒绝,没有发出请求. delist 清除一个频道指针和
保持每一个建筑.
testers
evenhub testers # the roster and each status
evenhub testers --search name@
evenhub testers add [email protected],[email protected]
evenhub testers add --from ./testers.csv
evenhub testers add [email protected] --reinvite
evenhub testers rm [email protected]
add 通过逗号、分号或新行分隔地址,或文件
--from (每行一个地址,或单列的CSV email 页眉行
已跳过). 可引用单元格、门户的导出方式以及领先
字节顺序标记被忽略 。 地址完全按照书面发送 - 本地
部分是一些邮件主机对大小写敏感的 - 批次在之前被验证
任何信息都会被发送: 一个错误的地址拒绝带有9号出口的全部文件.
同一拼法的重复被放弃;一个地址的两个拼法都是
发送并报告,因为他们是否是一个测试者是服务器的电话.
名册匹配使用精确的电子邮件拼写,包括大小写. 匹配
请求地址或活动地址被跳过并报告,所以重运行
拼写保留了待定链接. --reinvite 向受邀者发出新的邀请,
它使先前电子邮件中的链接无效。 现役成员被扣住
即便如此,服务器仍然保留了公认的会员资格,而且
没有要替换的邀请链接 。 请柬在七天后失效.
拒绝的和过期的地址可以不提交 --reinvite。 。 。 .
成功报告提交请求,而不是按地址发送电子邮件。 贾森
invited 提交的地址清单; reinvited 提交的地址
匹配下方现有的非主动行 --reinvite。 。 。 .
搭建一个Beta大楼需要积极的会员身份和在Beta大楼的基础上建设
频道.
图标规则
服务器比传送门的上传框更严格,所以 CLI 运行相同 检查本地并报告精确的像素 .
- PNG, 最多1 MB. (英语).
- 准确的24x24.
- 每个像素要么完全透明,要么不透明
#F4F4F4。 。 。 . - 升像素形成光栅相通 2x2 个块:按光栅顺序扫描,每个块 未消耗的已点燃的像素 一定是右下和下方的相邻点亮的 对,不能坐在最后一行或一列.
在检查块前检查整个图像的颜色, 所以一个出错 其它有效块内的有色像素在自己的区域中报告 坐标,用它的颜色,而不是在街角.
如果您不愿手建位图, 请在门户的画布上绘制图标 .
恢复中断的上传
create 财务报告和审定财务报表 upload 先发送软件包,再承诺第二 在此之前
执行中, CLI 试图缓存草稿 ID, 软件包 SHA-256, 基址和
账户身份 ~/.config/evenhub/state.yaml如果承诺失败,则晚一点
使用同一软件包运行,可以重新使用可用的、未过期的缓存草稿.
在重试结果不确定的写入之前检查服务器状态 .
缓存是可选的 。 如果账户身份无法安全确定,或
缓存读取、 保存或清理失败, CLI 在 stderr 上警告并继续
与核心操作。 仅缓存故障不能更改退出代码;
aPI结果仍然决定成功。 缓存验证继续隔离
账户、应用程序和环境。 失败的产出报告 draft_cached 准确;
false 表示上传的草稿无法自动再利用 .
服务器侧面草稿直播30分钟. 一个比它更旧的缓存条目, 或者一个
属于不同的账户, 应用或显示, 被丢弃, 软件包
重新发送. --new-draft 总是再次发出.
环境变量
| 变量 | 效果 |
|---|---|
EVENHUB_BASE_URL | 覆盖 API 基础( 默认) https://hub.evenrealities.com(中文(简体) ) |
EVENHUB_API_URL | 直接覆盖 API 根 |
EVENHUB_API_DEBUG | 记录每个 API 请求及其状态到 stderr |
EVENHUB_API_HEADERS | 额外的调试请求头 |
EVENHUB_NPM_REGISTRY | 书记处曾经查过SDK的 minAppVersion |
XDG_CONFIG_HOME | 保存证书、 QR 和草稿状态 |
壳完成
脚本覆盖了两者 evenhub 联 合 国 eh 别名.
# bash — source from .bashrc
evenhub --completion-bash > ~/.evenhub-completion.bash
# zsh — any directory on your fpath
evenhub --completion-zsh > ~/.zfunc/_evenhub
# fish — needs a second file, since fish autoloads by command name
evenhub --completion-fish > ~/.config/fish/completions/evenhub.fish
echo 'complete -c eh -w evenhub' > ~/.config/fish/completions/eh.fish
变化
0.2.0 (中文(简体) )
- 添加应用程序管理环 :
create, (中文(简体) ),upload, (中文(简体) ),update, (中文(简体) ),ls, (中文(简体) ),download, (中文(简体) ),rm, (中文(简体) ),promote, (中文(简体) ),delist, (中文(简体) ),testers, (中文(简体) ),logout self-check打印账户和角色及收益--json--json每个命令上: stdout 上的一个对象, stderr 上的诊断- 每个失败类型有一个退出代码, 由服务器的错误代码映射
- 退出 9 保留给服务器状态不变的失败; 本地步骤
在写出报告后失败, 并列出已完成的效果
partial - 外壳完成覆盖整个表面
evenhub财务报告和审定财务报表eh数字 :pack提议--json现在它的第一个位置是<manifest>改为json,以及self-check完成 。 在zsh和鱼,提供文件名 仅当参数走路径时; shash 保持可读行文件名倒置 任何完成的脚本都空出 - 本地验证名称、标签行、描述、更改日志、电子邮件和图标,所以 拒绝的输入从未到达服务器
- 图标检查在块前运行颜色并命名违法像素
- 恢复中断
create或者说upload从缓存的草稿中 服务器的30分钟终身荣誉 - 语义版本的顺序构建
testers add跳过已邀请或活动的地址 ;--reinvite部队 向受邀者发出新邀请,并留住现任成员- 放弃捆绑的运行时间依赖性
main.js从不负载,所以 单独安装软件包 - 仅装入 PNG QR 渲染器
qr --external,删除节点 来自其他命令的去除警告
0.1.14 (2026-08-06) (中文(简体) )
- 来源和印章
min_app_version包装时从 SDK npm 元数据 - 添加
--sdk-ver编辑--enforce-manual-version兼容性覆盖 - 为两者添加 shell 补全支持
evenhub财务报告和审定财务报表eh - 包装失败时返回失败退出状态
0.1.13 (韩语)
- 在终端中打印 qrcode 时添加 TERM/COLORTERM 检测
0.1.12 (中文(简体) )
- 现在使用
qrcode-terminal用于终端 qrcode 和qr-image用于外部 qrcode . - 固定登录命令( 尽管目前不是超级有用)
0.1.11 (韩语)
- 窗口中的固定包装问题
0.1.10 (2026-03-23) (中文(简体) )
- 对app.json的小型限制调整
0.1.9 (2026-03-21) (中文(简体) )
- 调整app.json大小限制
0.1.8 (2026-03-19) (中文(中国大陆) )
- 调整 app.json 格式
01.7 (2026-03-13) (中文(简体) )
- 固定输入命令的“-d”选项
0.1.6 (2026-03-12) (中文(简体) )
- 调整 app.json 文件格式