# @evenrealities/evenhub-cli 中文文档

规范地址：https://npmcn.com/package/%40evenrealities/evenhub-cli/

版本：0\.2\.0
npm 元数据更新时间：2026-10-20T12:33:18.506Z
中文译文更新时间：2026-11-14T01:00:56.211Z
软件包许可：UNLICENSED

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40evenrealities/evenhub-cli
原文对照：https://npmcn.com/package/%40evenrealities/evenhub-cli/?lang=original
项目主页：https://hub.evenrealities.com/docs

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：1.6 MB，10 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：^20\.17\.0 \|\| ^22\.13\.0 \|\| \>=23\.5\.0
- 运行依赖：0 个
- 首次发布：2026-01-28T10:29:14.776Z
- 最新版本发布：2026-10-20T12:33:18.334Z
- 近 30 天下载量：421544（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：11（近 12 个月 11 个）

## 中文简介

EvenHub应用软件开发、包装和在Even Realities G2眼镜上分发的命令行界面.

## 安装

```sh
npm install @evenrealities/evenhub-cli
```

也可以使用：`pnpm add @evenrealities/evenhub-cli`、`yarn add @evenrealities/evenhub-cli`、`bun add @evenrealities/evenhub-cli`

## README

# 连Hub CLI

EvenHub 开发和应用管理的命令行界面. 覆盖 整个循环 开发者从终端运行: 脚手架工程、 包、 创建 应用程序,上传新建筑,邀请β测试者, 并加盖β 频道. 公众评议和出版在"门户"上停留.

两者 `evenhub` 财务报告和审定财务报表 `eh` 运行同一程序.

## 安装

```bash
npm install -g @evenrealities/evenhub-cli
```

已出版的软件包载有其编译的 JavaScript 和 Web Assembly 装包机,所以安装它 既不需要布恩,也不需要拉斯特。 支持的 Node.js 版本 是在20号、22.13号、22号、23.5号及以后的节点上.

## 先登录

`login` 提示密码,因此需要一个交互式终端。 运行 它曾经,用手:

```bash
evenhub login
```

地产 `~/.config/evenhub/credentials.yaml` (单位:千美元)`XDG_CONFIG_HOME` 设定时获胜; Windows 使用 `%APPDATA%`只有你才能读 每一个 命令重用它们,所以脚本, CI 任务和代理从不提示. 一个过期 访问令牌自动刷新; 当刷新令牌也过期时, 命令退出 2 并请求您再次登录.

`evenhub logout` 无效刷新令牌服务器侧并删除本地端 文档.

## 两种输出模式

每个命令都接受 `--json`。没有它,你得到对齐,人可读 线条。 用它装上一个JSON的物体 而不是其他的 提示, 警告和进展到 stderr .

失败情况 `--json` 也是JSON的对象:

```json
{"ok": false, "exit": 5, "code": 1020, "message": "...", "hint": "..."}
```

服务器上已更改的失败添加 `partial`,哪个 按名称列出这些效果:

```json
{"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`

```bash
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`

```bash
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 模式时唯一需要的命令 .

```bash
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` ——新应用加其首作

```bash
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` ——现有应用的新版本

```bash
evenhub upload out.ehpk -m "What changed"
```

弹出 `version` 内 `app.json` 并再次装入; 重新装入已有的 版本出入口4. `-m, --changelog` 需要并封顶500个字符.

### `update` ——编辑未发布的app上市程序

```bash
evenhub update --name "New name" --tagline "New line"
evenhub update --description-file ./store.md
evenhub update --icon icon.png
```

CLI 直接提交列表编辑. 如果一个应用软件得到批准或发布 版本,或待审查,服务器拒绝以代码1022进行更新; cLI 保留了这个错误,并退出 7。 在门户上进行编辑.

### `ls` ——应用,或者一个应用的构建

```bash
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` - 找一个建筑

```bash
evenhub download 1.0.1 -o ./build.ehpk
```

CLI 请求服务器提供新签名的存储 URL 并获取软件包 不带任何证书.

### `rm` - 删除一个构建或应用程序

```bash
evenhub rm 1.0.1                        # one build
evenhub rm --app <package_id> --yes     # the app and all of its builds
```

一个频道仍然指向的构造无法删除; 删除频道 先说 删除一个应用程序是不可逆的,所以它会提示,除非 `--yes` 通过.

## 分发命令

### `promote` 财务报告和审定财务报表 `delist`

```bash
evenhub promote 1.0.1 --to beta
evenhub delist --from beta
```

`promote` 只处理β通道。 公共出版需求审查 当地拒绝,没有发出请求. `delist` 清除一个频道指针和 保持每一个建筑.

### `testers`

```bash
evenhub testers                                   # the roster and each status
evenhub testers --search name@
evenhub testers add a@example.com,b@example.com
evenhub testers add --from ./testers.csv
evenhub testers add a@example.com --reinvite
evenhub testers rm a@example.com
```

`add` 通过逗号、分号或新行分隔地址,或文件 `--from` (每行一个地址,或单列的CSV `email` 页眉行 已跳过). 可引用单元格、门户的导出方式以及领先 字节顺序标记被忽略 。 地址完全按照书面发送 - 本地 部分是一些邮件主机对大小写敏感的 - 批次在之前被验证 任何信息都会被发送: 一个错误的地址拒绝带有9号出口的全部文件. 同一拼法的重复被放弃;一个地址的两个拼法都是 发送并报告,因为他们是否是一个测试者是服务器的电话.

名册匹配使用精确的电子邮件拼写,包括大小写. 匹配 请求地址或活动地址被跳过并报告,所以重运行 拼写保留了待定链接. `--reinvite` 向受邀者发出新的邀请, 它使先前电子邮件中的链接无效。 现役成员被扣住 即便如此,服务器仍然保留了公认的会员资格,而且 没有要替换的邀请链接 。 请柬在七天后失效. 拒绝的和过期的地址可以不提交 `--reinvite`。 。 。 . 成功报告提交请求,而不是按地址发送电子邮件。 贾森 `invited` 提交的地址清单; `reinvited` 提交的地址 匹配下方现有的非主动行 `--reinvite`。 。 。 . 搭建一个Beta大楼需要积极的会员身份和在Beta大楼的基础上建设 频道.

## 图标规则

服务器比传送门的上传框更严格,所以 CLI 运行相同 检查本地并报告精确的像素 .

1.  PNG, 最多1 MB. (英语).
2.  准确的24x24.
3.  每个像素要么完全透明,要么不透明 `#F4F4F4`。 。 。 .
4.  升像素形成光栅相通 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
# 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 文件格式

## 常见问题

### @evenrealities/evenhub-cli 是什么？

EvenHub应用软件开发、包装和在Even Realities G2眼镜上分发的命令行界面\.

### 如何安装 @evenrealities/evenhub-cli？

在项目目录运行 npm install @evenrealities/evenhub-cli，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 eh、evenhub，可以用 npx eh 直接运行。

### @evenrealities/evenhub-cli 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/evenrealities\_\_evenhub-cli 是否存在。

### @evenrealities/evenhub-cli 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @evenrealities/evenhub-cli 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js ^20\.17\.0 \|\| ^22\.13\.0 \|\| \>=23\.5\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @evenrealities/evenhub-cli 可以商用吗？

@evenrealities/evenhub-cli 使用 UNLICENSED 许可。作者声明为 UNLICENSED，即不授予公开使用许可（与公共领域的 Unlicense 不同）。使用前需获得作者授权。以上为概括，不构成法律意见，请以许可原文为准。

### @evenrealities/evenhub-cli 的下载量有多少？

根据 npm 官方下载统计，@evenrealities/evenhub-cli 在 2026/10/14 – 2026/11/12 这 30 天内被下载 421,544 次，日均约 14,051 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @evenrealities/evenhub-cli 还在维护吗？

最新版本 0\.2\.0 发布于 2026/10/20（24 天前）；至今共发布 11 个版本，其中过去 12 个月发布了 11 个；首次发布于 2026/01/28。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

