# @dashnex/cli 中文文档

规范地址：https://npmcn.com/package/%40dashnex/cli/

版本：0\.9\.0
npm 元数据更新时间：2026-11-06T19:28:51.880Z
中文译文更新时间：2026-11-11T14:07:40.368Z
软件包许可：UNLICENSED

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

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

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

- 包体积（解压后）：169 kB，73 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=22
- 运行依赖：12 个
- 首次发布：2026-02-12T18:08:39.650Z
- 最新版本发布：2026-11-06T19:28:51.631Z
- 近 30 天下载量：2737（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：84（近 12 个月 84 个）

## 中文简介

DashNex 框架的命令行界面

## 安装

```sh
npm install @dashnex/cli
```

也可以使用：`pnpm add @dashnex/cli`、`yarn add @dashnex/cli`、`bun add @dashnex/cli`

## README

# 校对:soup

DashNex框架的命令行界面. 这个CLI工具提供了管理DashNex项目的基本命令,包括模块构建,数据库操作和迁移. 它在节点模块文件夹中搜索所有@dashnex/ \* 模块,并从中加载命令 .

每个模块可以在CLI中添加一个命令. [读到这里](https://github.com/dashnex/module-template/wiki/CLI-Commands)

## 安装

```bash
npm install -g @dashnex/cli
```

更新到最新稳定版本 `dashnex update` ——它以相同的包管理器(npm或pnpm)和包(pack)重新安装CLI`dashnex` 或者说 `@dashnex/cli`它被安装了.

## 使用量

```bash
dashnex <command> [options]
```

## 图标

| 命令 | 说明 |
| --- | --- |
| `version` | 显示 CLI 版本 |
| `update` | 将 CLI 更新到最新的稳定版本, 使用 npm 或 pnpm 全球安装它来自 |
| `login` | 登录到您的 DashNex 账户 |
| `logout` | 注销并删除本地证书 |
| `switch` | 切换到另一行 |
| `whoami` | 显示登录业务( 带有其ID)、 用户和会话文件 |
| `dev` | 运行开发服务器(在 DashNex 应用程序文件夹中运行); `-p/--port`, (中文(简体) ), `-H/--host`, (中文(简体) ), `--https` |
| `check` | 运行构建时验证( 在 DashNex 应用程序文件夹中运行) |
| `install` | 使用 pnpm 或 npm 安装依赖性( 在 DashNex 应用程序文件夹中运行) |
| `app create` | 创建新的 DashNex 应用程序 |
| `app pull` | 将已有应用程序拖入指定的文件夹 |
| `app push` | 推动本地应用程序到 DashNex |
| `app delete` | 删除 DashNex 中的应用程序 |
| `app deploy` | 向 DashNex 部署应用程序 |
| `app status` | 显示业务、 应用程序 ID、 状态、 URL 和会话文件 |
| `app clear` | 删除本地依赖、缓存并构建输出 |
| `secrets list` | 列出所有与工人有联系的秘密姓名 |
| `secrets set` | 创建或更新一个秘密 |
| `secrets delete` | 删除一个秘密 |
| `module init` | 在 `packages/` 从模块模板(在 DashNex 应用程序文件夹中运行) |
| `module submit <package>` | 构建、发布和提交市场模块供审查(运行于 DashNex 应用程序文件夹) |

### 会议

本届大会生活在 `.dashnex/settings.json`命令使用最近的一个, 先查看当前文件夹, 然后查看每个父文件夹; 文件是 从来没有合并。 有自己的应用程序文件夹 `.dashnex/settings.json` 因此,它有自己的会话,独立于您主文件夹中的会话. `login`, (中文(简体) ), `logout`, (中文(简体) ), `switch`, (中文(简体) ), `whoami` 财务报告和审定财务报表 `app status` 都一样 文件并打印其路径.

CLI将其会话保持在两个键下,并将其他键留在 单独文件 :

```json
{
  "business": { "token": "…", "refreshToken": "…", "id": "103602" },
  "id": { "token": "…", "refreshToken": "…", "expiresAt": 1793270400000 }
}
```

`business` 是选定业务的标志; `id` 是 DashNex 标识 第二届会议 `switch` 用户。 由 CLI 0.7. x 及更年长的文件(平面) `token`, (中文(简体) ), `businessId`, (中文(简体) ), `idToken`... 密钥) 仍然被读取并被移动到此布局 下次CLI会保存文件.

在申请中,CLI对照 `BUSINESS_ID` (而且,如果它很重要, `APPLICATION_ID`) 申请书。 每个ID都读取 从第一个 `.env.production`, (中文(简体) ), `.env.development` 财务报告和审定财务报表 `.env` 名称 这个. `app push`, (中文(简体) ), `app deploy`, (中文(简体) ), `app delete`, (中文(简体) ), `app pull`, (中文(简体) ), `app tail`, (中文(简体) ), `secrets` 和使用会话的模块命令(例如 `db migrate --remote`(中文(简体) ) 拒绝竞选其他生意. `whoami` 财务报告和审定财务报表 `app status` 显示警告 换句话说.

### 选项

**登录**数字 :

-   `--business <id>` ——要选择的企业编号
-   `--no-browser` — 打印登录的 URL 而不是打开浏览器

登录通过浏览器中的 DashNex ID: 批准请求,复制 代码显示,并粘贴回CLI。 代码对 10 有效 分钟,只能使用一次.

在申请中, `login` 选择由 `BUSINESS_ID` (除非 `--business` 给出;见 [会议](https://npmcn.com/package/%40dashnex/cli/#readme-sessions),当电流 语句是用于另一个事务.

**登录**数字 :

从其他命令使用的设置文件中删除会话(参见 [会议](https://npmcn.com/package/%40dashnex/cli/#readme-sessions))并印出其道.

**切换**数字 :

-   `[businessId]` ——要切换的企业;没有它,从您的企业列表中选择

重用 DashNex ID 会话 `dashnex login`,所以不需要新的登录.

**备忘**数字 :

-   `-p, --port <port>` – Dev 服务器的端口( 落回到 `PORT` (原始内容存档于2013-10-10). env var, then 3,000
-   `-H, --host <host>` ——主机/接口绑定等. `0.0.0.0` 当应用程序运行在 Docker 内部时( 返回 `HOST` var.),后为当地主机. 与 `--https` 证书也覆盖此主机.
-   `--https` ——通过HTTPS提供当地信任的证书. 用途 `mkcert` 从您的 PATH 下载到 `~/.dashnex/mkcert`,安装本地 CA(可以提示您的密码)并写入 `localhost.pem` + 键 `localhost-key.pem` 进入应用程序 `.dashnex/certificates/` 文件夹( 从未执行) 。 如果失败, 将返回 HTTP .

**应用程序创建**数字 :

-   `--subdomain <subdomain>` ——子域
-   `-t, --template <template>` — 模板,可选(名称@branch-or-tag)

**应用程序拉**数字 :

-   `-y, --yes` - 跳过提示和子命令

**应用程序推**数字 :

-   `--deploy` 编号 : `--no-deploy` ——推后自动部署或跳出部署
-   `--no-check` - 跳过前推检查

**应用程序删除**数字 :

-   `-y, --yes` - 跳过确认提示

**应用程序清晰**数字 :

-   `-y, --yes` - 跳过所有提示

删除 `node_modules` (包括 vite 缓存),生成 `src/dashnex` 登记和登记 `dist`。 。 。 . 然后交互地分别询问是否删除本地数据库(`.wrangler`从那时起 一个目标持有数据 重建无法恢复。 与 `-y`编号 :`--ci` 没有人可以问,所以 数据库和其他所有东西一起清理.

**设置机密**数字 :

-   `--name <name>` —— 秘密名称( 如省略, 提示)
-   `--value <value>` —— 秘密值(如果省略则用被遮住的输入提示)

**删除机密**数字 :

-   `--name <name>` —— 秘密名称( 如省略, 提示)

**模块输入**数字 :

-   `[address]` - 模块创建,例如:. `crm` 或者说 `@acme/crm`。没有它,则直接创建一个缺失的保留模块;如果有多个,则选择其中的一个,并且只创建该模块。 如果您的企业在两个名称空间中拥有同一个地址( 旧的) `@dashnex/crm` 和一个新的 `@acme/crm`),通过完整软件包名称
-   `--all` ——创建每个未在的预留模块 `packages/` 现在
-   `--ci` -没有提示 缺少多个模块,请通过地址或 `--all`

**模块提交**数字 :

-   `<address>` 提交模块,例如:. `crm` 或者说 `@acme/crm`。当您的企业在两个名称空间中持有地址时, 传递完整软件包名称
-   `--ci` — 禁用自旋器( CI 模式)

## 开发市场单元

市场模块是扩展您 DashNex 应用程序的 npm 软件包 。 模块发布在您的企业自己的命名空间下,例如. `@acme/crm` (单位:千美元)`acme` 是命名空间, `crm` 电话地址). 在命名空间存在之前保留模块 `@dashnex/<address>` 名称。 建造一个:

1.  加入开发者程序,并保留商业上的一个模块名称. dashnex.com.
2.  部署一次申请 此写入 DashNex 注册 `.npmrc`。 。 。 .
3.  运行 `dashnex app pull` 在应用程序文件夹中.
4.  运行 `dashnex module init`它创造了 `packages/<address>` 从模块模板中将软件包名称设置为保留软件包名称(`@<namespace>/<address>`),指向模板的翻译名空间和 `/template` 页面和模块中的 API 路径,并将模块链接到应用程序中 `package.json`。 。 。 .
5.  建立和发展: `cd packages/<address> && pnpm install && pnpm build`,则 `dashnex install && dashnex dev` 在应用程序文件夹中.
6.  当模块准备好,运行 `dashnex module submit @<namespace>/<address>` (一个赤裸的) `<address>` 也可以在一个命名空间中保存它。 软件包名称 `packages/<address>/package.json` 须与预定时间相匹配。 该系统为DashNex登记册编制并出版模块 `review` ditt-tag,然后将版本提交审查(`latest` 仅在版本获得批准后移动). 本地版本必须高于上次提交的版本,其他版本不得审查.

被拉动的应用程序 `.npmrc` 被复制到模块文件夹中以供发布。 它映射出您的命名空间( I)`@<namespace>:registry=`向DashNex登记册;CLI向该登记册公布,然后回到 `@dashnex:registry` 线条。 文件被 gitignored 在模块文件夹, CLI 从不将注册符放入命令行.

## 创建自己的命令

CLI 自动发现每个安装的命令 `@dashnex/*` 模块(和您的应用程序). 要添加命令,模块导出一个 **默认数组 `CliCommandConfig`** 从 `src/commands/index.ts`。启动时, CLI 查找每个模块中的命令文件, 按此顺序 :

1.  `dist/commands/index.js` ——已建套件(已出版模块)
2.  `src/commands/index.ts` 链接/开发中模块
3.  `src/commands/index.js`

它导入文件并读取 **`default`** 导出( 数组) ,或名称 **`commands`** 导出为后退。 发现的命令在顶层注册,所以一个命令命名为 `report` 被援引为 `dashnex report`。 。 。 .

### 1\. 写一个处理器

处理者是 `CliCommand` - 任何具有下列特性的物体: `async execute(options)` 方法. `options` 是一个单一对象,将解析过的旗帜(按其长名),位置参数(由 `name`),并继承了父选项.

```ts
// src/commands/index.ts
import type { CliCommand, CliCommandConfig } from '@dashnex/types'

class ReportCommand implements CliCommand {
  async execute(options: { format: string; out?: string; name?: string; ci?: boolean }) {
    console.log(`Generating ${options.format} report for ${options.name ?? 'all'}…`)
    // ...do the work
  }
}

const commands: CliCommandConfig[] = [
  {
    name: 'report',
    description: 'Generate a report',
    arguments: [
      { name: 'name', description: 'Target name', required: false },
    ],
    options: [
      { flags: '-f, --format <format>', description: 'Output format', defaultValue: 'json' },
      { flags: '-o, --out <path>', description: 'Write to a file' },
    ],
    handler: new ReportCommand(),
  },
]

export default commands
```

现在 `dashnex report acme --format csv -o ./acme.csv` 电话 `execute({ name: 'acme', format: 'csv', out: './acme.csv', ci: false })`。 。 。 .

### 2\. 联合国. `CliCommandConfig` 形状

| 外地 | 类型 | 说明 |
| --- | --- | --- |
| `name` | `string` | 命令单词( E)`dashnex <name>`) (中文(简体) ). **要求.** |
| `description` | `string` | 显示于 `--help`。 。 。 . **要求.** |
| `handler` | `CliCommand` | 对象为 `execute(options): Promise<void>`。 。 。 . **需求** (当命令只分组子命令时使用不操作). |
| `arguments` | `CliArgument[]` | 位置参数 : `{ name, description, required?, defaultValue? }`改为: `<name>` (必需)或 `[name]` (可选). |
| `options` | `CliOption[]` | 旗帜 : `{ flags, description, defaultValue? }` —— 说 `flags` 使用命令语法,例如:. `-f, --format <format>`。 。 。 . |
| `subcommands` | `CliCommandConfig[]` | 巢被命令(如:. `dashnex mymodule sync`) (中文(简体) ). 有子命令的父程序在单独运行时会有所帮助 . |

注释:

-   A 类 **`--ci`** 旗子自动添加到每个命令( 无法旋转 / 交互式提示); 读取为 `options.ci`。 。 。 .
-   错误从 `execute` 以代码报告并退出 `1`;扔出用户中断被优雅地处理.
-   **发布步骤 :** 保证你的建筑喷出 `dist/commands/index.js` 还有 `dist` 在软件包中 `files`,所以指挥船 与模块.

## 常见问题

### @dashnex/cli 是什么？

DashNex 框架的命令行界面

### 如何安装 @dashnex/cli？

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

### @dashnex/cli 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @dashnex/cli 支持 ESM 还是 CommonJS？

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

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

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

### @dashnex/cli 可以商用吗？

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

### @dashnex/cli 的下载量有多少？

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

### @dashnex/cli 还在维护吗？

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

