@nilejs / cli
创建 尼罗河Js 项目和生成服务、操作和模式。
创建一个项目
bunx @nilejs/cli new my-app
cd my-app
bun install
cp .env.example .env
bun run dev
服务器启动于 http://localhost:8000。启动器将其数据存储在嵌入式PGlite数据库中,因此不需要安装数据库服务器。这个 入门指南 一步一步地通过启动器。
启动器包括:
src/index.ts:在Bun的原生HTTP服务器上的服务器入口点,带有记录器和onBoot模式推src/db/: PGlite和Drizzle客户端tasks桌子和ataskModel建立与createModelsrc/services/的显式注册表和域入口点tasks具有创建、列表、获取、更新和删除操作的服务Dockerfile,docker-compose.yml和docker-compose.dev.yml对于容器部署drizzle.config.ts,.env.example,tsconfig.json和package.json
生成代码
从项目根目录运行生成器。起动器的 gen 脚本为您调用CLI。
| 命令 | 描述 |
|---|---|
bun run gen service <name> | 添加带有示例操作的服务 |
bun run gen action <service> <name> | 向现有服务添加操作 |
bun run gen action <service> <name> --folder | 在其自己的文件夹中添加操作,用于私有助手模块 |
bun run gen schema | 从你的动作中生成Zod模式和TypeScript类型 |
generate 还有别名 gen,所以 bunx @nilejs/cli gen service users 在起动器外工作。
服务
bun run gen service users
创建:
src/services/users/
actions/sample.ts Sample action with a schema, an input type and a named handler
index.ts Registers the service and its public actions
命令行提示是否注册该服务 src/services/services.config.ts。如果您拒绝,它将打印您自己添加的行。
行动
bun run gen action users get-user
创建 src/services/users/actions/get-user.ts:
import { createAction } from "@nilejs/nile";
import { Ok } from "@nilejs/nile/fp";
import z from "zod";
const getUserSchema = z.object({
// Describe the input this action accepts
});
type GetUserInput = z.infer<typeof getUserSchema>;
const getUserHandler = async (input: GetUserInput) => {
// Implement users.get-user here
return Ok({ result: input });
};
export const getUserAction = createAction<GetUserInput>({
name: "get-user",
description: "GetUser action for users",
validation: getUserSchema,
handler: getUserHandler,
});
Kebab-case名称变成camelCase变量和PascalCase类型。通过导入来注册操作 src/services/users/index.ts 并将其添加到服务中 actions 列表。根注册中心导入服务,而不是单个操作。
模式和类型
bun run gen schema
中读取每个操作的验证模式 src/services/services.config.ts 并写道:
src/generated/schemas.ts:命名的Zod模式,例如tasksCreateSchemasrc/generated/types.ts:输入类型,如TasksCreatePayload
| 国旗 | 描述 |
|---|---|
-e, --entry <path> | 服务配置的路径(默认检测) |
-o, --output <path> | 输出目录(默认: src/generated) |
中包含每个已注册的操作 ServicePayloads。没有验证模式的操作接受对象有效负载(Record<string, unknown>),所以诸如 tasks.list 可以用 {}。此回退不添加服务器端验证。不能转换的模式将单独报告。与前端共享生成的文件,以使用与服务器相同的规则验证表单。
电流起动器
CLI 1.0.2的目标是尼罗河 ^1.0.4、Zod 4、TypeScript 7和Drizzle模型助手。生成的布局通过了Nile严格的启动检查。数据库设置返回一个结果,并防止启动失败;在关闭PGlite之前,关闭耗尽了Nile的工作。辅助程序如下所示 utils.createModel,以及Result helper来自 @nilejs/nile/fp.
当CLI更新时,现有的应用程序不会被重写。对于较老的初学者,添加一个服务入口点 src/services/<domain>/index.ts,在那里注册它的操作,并从中导入该服务 services.config.ts. 尼罗河迁徙笔记 描述当前的错误和启动行为。
编码助理
启动器包括 SKILL.md 使用当前的Nile操作模式、服务布局、Results、访问策略和客户端调用。让你的助手在更改后端之前阅读它。在更新了Nile之后,使用在 node_modules/@nilejs/nile/SKILL.md.
要求
- 包子 1.4.2或更高版本。发令员跑在小面包上,然后
gen schema使用Bun导入您的服务。
许可证
麻省理工学院