@aventara/cli

中文文档
1.0.0-rc.12发布于 2026/11/01SEE LICENSE IN LICENSEES Module零依赖近 30 天下载 2382

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

中文使用文档
文档目录11 节
  1. aventara new <name>
  2. aventara new <name> --host next
  3. aventara init
  4. 问题和旗帜
  5. 它写什么( 还没有 ORM, SQLite, npm)
  6. 在 Next
  7. 它打印的下一步
  8. 用手召唤它
  9. aventara skill
  10. 支助
  11. 许可证

@aventara/cli

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

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/[email protected] 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 其自己的文件。 。 。 .

在雀巢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。 。 。 .

它打印的下一步

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数字 :

# 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 共发布 16 个版本,首次发布于 2026/10/06;过去 12 个月发布了 16 个版本。

版本发布日期距今
1.0.0-rc.12latest2026/11/016 天前
1.0.0-rc.112026/10/317 天前
1.0.0-rc.102026/10/2711 天前
1.0.0-rc.92026/10/2315 天前
1.0.0-rc.82026/10/2216 天前
1.0.0-rc.42026/10/2117 天前

其他发布通道:pilot → 0.1.0-pilot.4。

关于 @aventara/cli 的常见问题

@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 和提交记录判断。