# @aventara/cli 中文文档

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

版本：1\.0\.0-rc\.12
npm 元数据更新时间：2026-10-31T20:56:43.083Z
中文译文更新时间：2026-11-07T07:56:56.484Z
软件包许可：SEE LICENSE IN LICENSE

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

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

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

- 包体积（解压后）：296 kB，46 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：^22\.23\.4 \|\| \>=24\.22\.1
- 运行依赖：0 个
- 首次发布：2026-10-06T15:21:26.458Z
- 最新版本发布：2026-10-31T20:56:42.887Z
- 近 30 天下载量：2382（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：16（近 12 个月 16 个）

## 中文简介

脚手架 Aventara 服务器 : `aventara new` 新的雀巢JS项目, `aventara init` 对于一个已有的.

## 安装

```sh
npm install @aventara/cli
```

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

## README

# `@aventara/cli`

这个 `aventara` 命令 : 它在 NestJS 12 或 Next.js 16 上脚手架上的 Aventara 服务器 .

```bash
npm i -g @aventara/cli@rc  # or run it once: npx @aventara/cli@rc <command>
aventara new my-api           # a new NestJS project with Aventara
aventara new my-app --host next   # a new Next.js app with Aventara (create-next-app, then init)
aventara init                 # Aventara added to the NestJS 12 or Next.js 16 project in this directory
aventara skill                # refresh the agent skill for the installed @aventara/core
```

它运行一次,全球或通过 `npx`; 这不是它所写的项目的依赖。 前端那边 (单位:千美元)`framework.client.ts` 和生成的客户端)属于 `@aventara/client` (单位:千美元)`npx @aventara/client@rc init`) (中文(简体) ).

## `aventara new <name>`

运行被钉 `nest new` (单位:千美元)`npx -y @nestjs/cli@12.0.8 new …`,或 `pnpm dlx …` 检查它的 `src/app.module.ts` 是那个版本写的,然后准确运行 `aventara init`新建项目的管道和 安装它。 存在且不为空的目录在运行前被拒绝 .

一旦安装,项目得到它的第一个基特承诺, `Initial Aventara Scaffold`,其中的锁文件和 无 `.env` (这是在 `.gitignore`) (中文(简体) ). 没有承诺,一行说为什么,当Git没有安装,当Git没有 `user.name`编号 :`user.email`,或者当目录已经存在于 git 寄存器内(单列波:将其承诺在那里). `--skip-git` 没有仓库,也没有承诺.

### `aventara new <name> --host next`

运行 `create-next-app@latest <name> --ts --app --src-dir --import-alias "@/*" --use-<npm|pnpm> --skip-install`,则 `aventara init`管道在新应用上,然后安装。 creat-next-app 在您的终端上询问自己的问题; 与 `--yes` 它取其默认值取而代之(并给出) `--yes` 这也是没有终点站需求的跑步. 自己的旗帜会追上 `--`,如同: `aventara new my-app --host next --yes -- --tailwind --eslint`。 。 。 . `--skip-git` 变成它的 `--disable-git`。 。 。 . `--host` 默认为 `nest`。 。 。 .

## `aventara init`

运行在现有的 NestJS 12 或 Next.js 16 项目中 `package.json`数字 : `@nestjs/core` 实值 雀巢JS, `next` 是 Next.js , 在一个句子中拒绝视两者或两者兼有的项目。 Next.js 应用程序必须使用 下方的 App 路由器 `src/app/` 和地图 `@/*` 改为 `./src/*` 内 `tsconfig.json` (作为创建 - next -app 写它),并且有 还没有手术室 本节其余部分为 NestJS; a Next.js app gets [其自己的文件](https://npmcn.com/package/%40aventara/cli/#readme-what-it-writes-in-a-nextjs-app)。 。 。 .

在雀巢JS项目中,它拒绝另一个雀巢少校, TypeScript 7, 一个仅用纱线的锁文件, 或者一个已经初始化的项目 .

在还没有ORM的工程中,ORM和数据库被询问(或取自旗下),下面的一切都是 写作.

在已经使用 Prisma 的项目中,安装的 Prisma 必须是一个 Aventara 适配器支持, 或者运行是 在一句话中拒绝,没有写。 今天是Prisma 7 (英语)`^7.10.1`)在 SQLite 或 PostgreSQL 上,带有驱动程序 适配器和 `prisma-client` 发电机 你的计划,Prisma配置和服务 被重复使用,从来没有写  `.env` 只有收益 a `CORS_ORIGINS` 当它无线时, 线条会结束。 Init 找到扩展的类 `PrismaClient` 和导出它或询问的模块.

### 问题和旗帜

每问有旗. 在终端上,会提出一些未回答的问题;其他任何地方(CI,一个脚本)都会通过旗帜 或者说 `--yes`,或者运行停止在一句中命名所缺少的东西,然后写出任何东西。 只有一个问题 显示可能的答案,而不是询问.

| 旗帜 | 问题 | 默认 |
| --- | --- | --- |
| `<name>` (单位:千美元)`new` 仅限) | 项目目录. | 所需经费 |
| `--host <nest|next>` (单位:千美元)`new` 仅限) | 在此基础上建立的框架; `init` 读它从 `package.json`未问. | `nest` |
| `--orm <alias>` | ORM作为适配器的别名: `prisma7` (出版物7), `@aventara/prisma7-adapter`) (中文(简体) ). `--help` 列出存在的别名. | 只有一个 |
| `--db <provider>` | 数据库:适配器的提供者(`sqlite`, (中文(简体) ), `postgresql`) (中文(简体) ). | `sqlite` |
| `--package-manager <npm|pnpm>` | 包裹经理. | 锁文件,另一个是发射CLI的,另一个Npm |
| `--prisma-service <path#Export>` (单位:千美元)`init`(中文(简体) ) | 您的Prisma服务, 当找到不止一个,或者没有. | 找到的; 无 – 写 `src/prisma.service.ts` |
| `--prisma-module <path#Export>` (单位:千美元)`init`(中文(简体) ) | 提供并输出它的巢穴模块. | 找到的那个 |
| `--skip-install` | 写入文件; 打印安装而不是运行. |  |
| `--skip-git` (单位:千美元)`new`(中文(简体) ) | 传到 `nest new`。 。 。 . |  |
| `-y`, (中文(简体) ), `--yes` | 接受每个未解答的默认,并替换不同的现有内容. |  |
| `--verbose` | 显示输出 `nest new` 和运行时的安装. |  |
| `-- <args>` (单位:千美元)`new --host next`(中文(简体) ) | 被通过来创建 -next -app as they, after its own. 后它自己. |  |

虽然它有效,但每个步骤都显示在Stderr上,例如 `[3/4] Installing dependencies (npm install)`在终端上 目前为止有一个旋转器和几秒;在管子中,在CI中(`CI`或与 `NO_COLOR` 每一步一行都是纯线 (单位:千美元)`… done (12.4s)`) (中文(简体) ). 产出 `nest new` 而安装只有在失败时才会显示,或者使用 `--verbose`。 。 。 .

现有内容不同于拟写的内容(a) `.env` 键,一个脚本,一个文件)已列出,仅被替换 当你确认,或用 `--yes`;在无人问起的地方,跑道停止而无动于衷.

### 它写什么( 还没有 ORM, SQLite, npm)

| 路径 | 事后拥有者 |
| --- | --- |
| `prisma/schema.prisma`数字 : `prisma-client` 生成为 `src/generated/prisma`页:1 `User` 模式 | 你们 |
| `prisma.config.ts`: 负载 `.env` 本身( Prisma 不) | 你们 |
| `src/prisma.service.ts`数字 : `PrismaService` 用驱动适配器扩展客户端, 拒绝丢失 `DATABASE_URL` 在服务器监听之前; `PrismaModule` | 你们 |
| `src/aventara.config.ts`数字 : `aventaraConfig(prisma)`页:1 `api` 挂载路径( r)`/api`页:1 `diagnostics` 通过 Nest 记录服务器失败的原始错误及其堆栈 `Logger`,则 `exposed`编号 :`exemptions`, (中文(简体) ), `pipelines` 财务报告和审定财务报表 `resources` 添加时 | 你们 |
| `src/app.module.ts`: 一个添加导入的编辑, `PrismaModule` 财务报告和审定财务报表 `AventaraModule.forRootAsync({ … })`; 当文件不是预期形状时打印 | 你们 |
| `test/app.e2e-spec.ts`: 添加一个 `GET /api/_contract` - 巢穴试验200次 `GET /` 测试; 文件不是 Nest 时留下 | 你们 |
| `src/main.ts`: 一个编辑后 `NestFactory.create`数字 : `app.enableCors(…)` 的逗号分隔出处 `CORS_ORIGINS`,然后关闭 CORS 当它是未设置或空的, 然后一个评论退出的平台级别限速器(`express-rate-limit`\- 巢穴吗 `@nestjs/throttler` 是一个不运行在 Aventara 路径上的守护者; 当文件已经配置了 CORS , 当文件没有此行时打印时, 则留下 | 你们 |
| `.env` (单位:千美元)`DATABASE_URL`,以及 `CORS_ORIGINS="http://localhost:5173,http://localhost:3001"` 除非有行设置,否则将予以补充, `.gitignore` (单位:千美元)`/src/generated/`, (中文(简体) ), `/dev.db*`, (中文(简体) ), `.env`(中文(简体) ) | 你们 |
| `package.json`数字 : `@aventara/*` 在这个CLI的版本, `prisma`, (中文(简体) ), `@prisma/client` 和适配器申报范围的驱动程序,所以第一个安装需要最新的Prisma 7; `aventara:prepare`运行 `postinstall` 由 `prebuild`, (中文(简体) ), `prestart`, (中文(简体) ), `prestart:dev` 财务报告和审定财务报表 `prestart:debug`,则 `.env` 开始脚本和 `test:e2e` (单位:千美元)`--env-file`, (中文(简体) ), `--env-file-if-exists`(中文(简体) ) | 你们 |
| `pnpm-workspace.yaml` (仅pnpm): `allowBuilds` 用于 Prisma 和 SQLite 的安装脚本 | 你们 |
| `src/generated/prisma/**`, (中文(简体) ), `src/generated/aventara/discovery.artifact.ts` | 由 `aventara:prepare` (运行在每次安装、构建和启动上,所以修改计划只需要重新启动);永远不要编辑 |
| `.claude/skills/aventara/` (单位:千美元)`SKILL.md`, (中文(简体) ), `reference/*.md`, (中文(简体) ), `.aventara-skill.json`: 您的 AI 编码代理读取的代理技能 | 阿文塔拉说: `aventara skill` 刷新它,并保存一个您更改的文件,除非 `--force` |
| `AGENTS.md`: 介于 `<!-- aventara:start -->` 财务报告和审定财务报表 `<!-- aventara:end -->`,附于现有文件 | 您,除了标记的部分 |

### 在 Next

所有阿文塔拉都在一个文件夹里, `src/aventara/`,在路径上 `@aventara/next` 声明和 `aventara-build` 读取.

| 路径 | 事后拥有者 |
| --- | --- |
| `prisma/schema.prisma`, (中文(简体) ), `prisma.config.ts` | 您(如雀巢JS项目) |
| `src/prisma.ts`数字 : `prisma()`这个应用是Prisma的客户端 与驱动程序适配器, 第一次使用,并保持交叉 `next dev` 重新装入 | 你们 |
| `src/aventara/config.ts`数字 : `aventaraConfig`如雀巢JS项目一样 `console.error` | 你们 |
| `src/aventara/adapter.ts`:适配器的描述 | 你们 |
| `src/aventara/server.ts`数字 : `Aventara({ ...aventaraConfig, adapter, prebuilt, state })` 导出 `handlers`, (中文(简体) ), `avClient`, (中文(简体) ), `avApp` 财务报告和审定财务报表 `ready`· ; `@/aventara/server` | 你们 |
| `src/app/api/[...aventara]/route.ts`: 每一种方法 `handlers` | 你们 |
| `src/instrumentation.ts`: 等待着 `ready()` 在节点运行时,一个错误的配置停止 `next start`。你的仪表文件永远不会被替换,即使用 `--yes`: 要添加的行被打印 | 你们 |
| `next.config.ts`数字 : `serverExternalPackages: ["@aventara/core", "@aventara/prisma7-adapter"]` 添加到它的配置对象中,因此Node.js每服务器进程一次加载它们(每个路由和页面一个核心和一个Prisma客户端). 添加到创建- next-app的配置中, 或添加到任何 `const nextConfig = {` 对象没有 `serverExternalPackages`; 写作新 `next.config.ts` 当应用程序没有。 已经命名的配置 `serverExternalPackages`,或者被写 另一种方式, 永远不会改变,即使与 `--yes`: 要添加的行被打印 | 你们 |
| `package.json`数字 : `@aventara/core`, (中文(简体) ), `@aventara/next`,适配器和 `@aventara/build` 在这个CLI的版本, `server-only`,Prisma及其驱动器在适配器的已宣布范围(第一次安装时最新的Prisma 7); `aventara:prepare` (结束于 `aventara-build --client`),运行于 `postinstall` 财务报告和审定财务报表 `prebuild` | 你们 |
| `.env` (单位:千美元)`DATABASE_URL`, (中文(简体) ), `.gitignore` (单位:千美元)`/src/generated/`, (中文(简体) ), `/dev.db*`, (中文(简体) ), `/src/aventara/generated/`, (中文(简体) ), `/src/aventara/client.ts`, (中文(简体) ), `/src/aventara/universal.ts`, (中文(简体) ), `.env`(中文(简体) ) | 你们 |
| `src/aventara/client.ts`, (中文(简体) ), `src/aventara/universal.ts`, (中文(简体) ), `src/aventara/generated/` | 由 `aventara:prepare`; 绝不编辑 |

没有 CORS (浏览器调用相同的来源) , 没有 Pages 路由器, 没有代理, 没有 MCP 路由 : a `mcp` 您添加的终点 下一个J需要 `authorization`今后的步骤: `npx prisma db push`,则 `npm run dev`。 。 。 .

### 它打印的下一步

```bash
npx prisma db push          # create the tables (init never touches a database); pnpm: pnpm exec prisma db push
npm run start:dev           # GET http://localhost:3000/api/_contract
npx @aventara/client@rc init   # in your frontend; pnpm: pnpm dlx @aventara/client@rc init
```

前端命令是软件包管理器自己的跑取器(`npx`,或 `pnpm dlx` (pnpm)和,虽然CLI是一个 预先释放,并携带其分队(`@rc`),因此客户端来自同一份发行.

以 PostgreSQL 设置 `DATABASE_URL` 内 `.env` 首先(init写出Prisma的占位符,从不问一个秘密).

### 用手召唤它

随着服务器的运行,启动器 `User` 模型解答时间 `/api`数字 :

```bash
# 1. The contract. Its protocol.hash is what every resource request sends as Aventara-Contract-Hash.
HASH=$(curl -s http://localhost:3000/api/_contract | node -p 'JSON.parse(require("fs").readFileSync(0, "utf8")).protocol.hash')

# 2. find.many on User, with both identity headers.
curl -s -X POST http://localhost:3000/api/_resources/User/find/many \
  -H 'Content-Type: application/json' \
  -H 'Aventara-Protocol-Version: 1' \
  -H "Aventara-Contract-Hash: $HASH" \
  -d '{}'
# {"data":[],"code":"A1000","cause":null}
```

留下一个身份信头 答案是 `400 A2000`,命名缺失的页眉。 散列变化 当方案或配置完成时:再次获取,并重新生成客户端.

资源键是模型名称,如所书. `model User` 实值 `User` 到处都是,在电线上 (单位:千美元)`/_resources/User/find/many`)和生成的客户端(`avClient.User.find.many({})`) (中文(简体) ). 没有东西被重新命名, 小写或复数化.

结果只读。 列表结果为 `readonly` 数组, 因此键入 `readonly User[]`数字 : `const users: readonly User[] = await avClient.User.find.many({});`。 。 。 .

## `aventara skill`

写入代理技能 `@aventara/core` 在此目录中安装的工程:其版本及其 `ERRORS.md` 作为 `reference/errors.md`。它读取了这些文件,并且没有运行项目的任何软件包。 一个技能文件 将替换前所写;将保留您所更改的,并附加警告,除非您通过 `--force`内 `AGENTS.md` 仅限 替换Aventara标记之间的文字(或所附部分),以及 `CLAUDE.md` 从来没有写。 运行它 您的 CLI 状态 `@aventara/core` 版本 : `npx @aventara/cli@<version> skill`。 。 。 .

## 支助

-   (原始内容存档于2018-10-12). NestJS 12.
-   节点 `^22.23.4 || >=24.22.1`。在任何其他节点上,垃圾桶在一句中拒绝指定该范围。 在节点 22 使用 npm~11,因为Node 22的捆绑npm 10无法安装Nest 12自己的脚手架. A CommunityJS 项目的 joest e2e 需求 节点是24.9,这是Nest和Jest的极限.
-   npm 和 pnpm (英语). 雅尔恩不支持.
-   无害环境管理和共同JS项目.
-   Prisma 7 (英语:`^7.10.1`)在SQLite和PostgreSQL上.

Aventara 适配器软件包生成了可提供的主机、主机、数据库和驱动程序 (单位:千美元)`src/catalog/adapter.catalog.generated.ts`),从未手工列出,所以未来 `@aventara/prisma8-adapter` 显示 当它存在时.

## 许可证

PolyForm盾 1.0.0 附加许可. 它可以自由使用,包括商业应用,但你 可能不会用来制造一种与阿文塔拉本身竞争的产品. 见 `LICENSE` 财务报告和审定财务报表 `LICENSE-ADDITIONAL-PERMISSION.md`。 。 。 .

## 常见问题

### @aventara/cli 是什么？

脚手架 Aventara 服务器 : aventara new 新的雀巢JS项目, aventara init 对于一个已有的\.

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

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

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

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

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

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

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

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

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

@aventara/cli 使用 SEE LICENSE IN LICENSE 许可。许可条款写在包内的独立文件中，请阅读该文件确认可否商用。以上为概括，不构成法律意见，请以许可原文为准。

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

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

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

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

