@elysiumjs/styx (英语)
Elysium.js框架的命令行工具. 它创建项目,生成代码并运行您的应用命令.
安装
在全球安装以创建项目,并在任何地方使用:
bun add -g @elysiumjs/styx
项目还将其安装为dev依赖(styx create 这样做)。 在一个项目中,全球 styx 将每个命令放到项目自己的副本上,所以每个项目运行它所写的Styx版本.
独立可执行文件,既不需要Bun文件,也不需要软件包文件,使用 bun run build:bin (当前平台)或 bun run build:bin --all (Linux, macOS和Windows). 他们将代码根和项目模板与赫法斯图斯嵌入.
创建项目
styx create my-app
没有选项,它要求模板(单一或多模块),运行时间,模块,插件和特性. 选项跳过提示 :
styx create my-app --template multi --modules users,billing --features prettier,hephaestus --git false
--install false 在不安装依赖的情况下写入文件, --force 替换不为空的文件夹,并 --yes 为每个未给出的选项取默认值. bun create elysium my-app 运行相同的命令.
生成代码
生成器会从stubs写出文件,从不启动您的应用程序,所以在应用程序启动前工作:
styx make:command --name SendReport
styx make:controller --name UserController
styx make:job --name ImportUsers
styx make:middleware --name AuthMiddleware
styx make:model --name User
styx make:repository --name UserRepository
styx make:seeder --name CountriesSeeder
styx make:service --name UserService
styx make:validator --name CreateUser
styx make:view --name Post
styx module:new --name billing
styx module:rename --module billing --name payments
在多模块项目中,通过 --module <name>运行 styx help <command> 每一个选项.
文件与模块文件夹以 kebab- case 命名 : styx make:service --name UserProfileService 写入 services/user-profile.service.ts。验证人只持有其图案,除非你要求其方法 --authorize 财务报告和审定财务报表 --validate,并宣布一个模型 supportTenancy 仅使用 --support-tenancy。 。 。 .
类型客户端
styx routes:generate 将应用程序的路由类型写入 src/routes.gen.ts (一组) routes 内 .elysiumrc 或通过 --out,绝对或相对项目,以改变它). 文件导出 AppRoutes,对于伊甸园:
import type { AppRoutes } from './routes.gen';
import { treaty } from '@elysia/eden';
const api = treaty<AppRoutes>('http://localhost:3000');
const { data } = await api.users({ id }).get();
类型来自控制器方法:用 @Http.param, (中文(简体) ), @Http.query 财务报告和审定财务报表 @Http.body 给出请求类型,返回类型给出响应类型,因此注释返回不同形状的方法类型。 一条路线 response 是视图( e)PostView, (中文(简体) ), PostView.list 或者说 PostView.page)将其反应类型取自视图的图案. 任何项目文件导出给路由的视图 unknown 响应,因为处理器返回视图中的内容,而不是客户端得到的内容。 文件只保留类型, 并且由 typecheck 在新项目中, 所以不要让它在git.
styx routes:check 当一个路由宣布其成功响应时失败, 这样客户端和 OpenAPI 文档就能知道它返回的内容 。 设定 response 选项,包括至少具有一个 2xx 状态的状态图。 服务器发送事件路线和回答204的路线被忽略. 在 CI 旁边运行 typecheck。 。 。 .
每个控制器都包含应用程序列表的模块,不管它是什么申报,只要有一个项目输出它的文档. 当一个装饰者添加不属于该类方法的路由,或者解答方法返回以外的东西时,一个路由类型贡献者会对它们进行打字:全球服务标记 Http.RouteTypes,积极发展. 流程控制器按此方式键入 AriadneModule。 。 。 .
@Service.register({ tags: [Http.RouteTypes], global: true, env: Environments.local })
export class PingRouteTypes implements HttpRouteTypesContributor {
public supports(controller: Function) {
return isPingable(controller);
}
public route(controller: Function, route: HttpRouteDescription, ref: HttpRouteTypeRef) {
if (route.name === 'ping') return { response: '{ pong: true }' };
return ref.method
? {
response: `Reply<ReturnType<${ref.method}>>`,
imports: [{ from: './reply', names: ['Reply'] }]
}
: undefined;
}
}
贡献者给出了 params, (中文(简体) ), query, (中文(简体) ), body 财务报告和审定财务报表 response,并省去方法给出的部分。 当一个贡献者给出其每一种路线时,不包含文件输出的控制器,如工厂所建的一个控制器.
运行应用程序
其它命令都装入工程的应用程序( E)src/app.ts 或者说 index.ts在那里运行 :
styx serve
styx migration:generate
styx migration:run
styx <your command>
这些需要 @elysiumjs/styx 在项目的依赖性.
构建工具
项目安装时 @elysiumjs/hephaestus (作为依附) hephaestus:* 命令可通过 styx 没有在应用程序中添加任何内容.
列出命令
styx list
styx help <command>
捐款
欢迎针对错误的问题和问题 GitHub 图像对拉动请求也表示欢迎;审查这些请求是为了使框架符合其设计.
许可证
这个项目根据Apache许可证2.0版本获得许可. 见 自由主义 文档以获取更多信息.