elysiajs について
Elysia v2プロジェクト向けの開発スキルで、バージョンに応じたAPIの使い方、型、検証、テストを案内します。既存のプロジェクト規約に沿い、作業内容に合った資料を参照できるよう支援します。
主な機能
- 01バージョンとプロジェクト規約の確認
- 02Elysiaのルーティングとライフサイクル規則
- 03スキーマと型推論の活用
- 04プラグインと型付き依存関係の構成
- 05ルートのテストと型チェック
活用シーン
- 01Elysia v2のルート実装・変更
- 02検証やエラー処理の挙動調査
- 03ルートのテストと推論型の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ elysiajs/ skills --skill elysiajsインストール後、Claude Code で/elysiajsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
metadata.jsonreferences/ai-sdk.mdapi.mdbetter-auth.mdcheat-sheet.mdcomposition.mdcookie.mddeploy.mddrizzle.mdeden.mderrors.mdlifecycle.mdmigration.mdobservability.mdopenapi.mdplugins.mdprisma.mdproject-structure.mdreact-email.mdruntimes.mdtesting.mdvalidation.mdversions.mdwebsocket.md詳細
Elysia v2
まずはこちら
package.json、ロックファイル、ランタイム、アプリの構成を確認します。ユーザーから移行の依頼がない限り、既存のバージョンと規約を維持します。- このスキルの対象は 2.0.0-rc.0 以降です。v1 の場合は、アップグレードの許可としてではなく、違いを把握するために 移行ガイド を使用します。別のベータ版と内容が異なる場合は、インストール済みの型を確認してください。
- タスクに必要なリファレンスのみを読みます。バージョン には、ソースのリビジョン、パッケージのベースライン、検証の制限が記載されています。
- 型を確認し、拒否される場合の経路も含めて、対象のルートを実際に動かします。テスト を参照してください。
重要なルール
- オプションはハンドラーより前に指定します。
.get(path, options, handler)、.get(path, handler)、.get(path, staticValue)は有効です。 - 返された型を維持します。 呼び出しをチェーンするか、結果を新しい変数にバインドします。
let app = new Elysia()に再代入しても、推論される型は拡張されません。 - フックはルートより前に登録します。 親のフックを
.use(child)より前に登録すると、子のルートにも適用されます。onRequestはルーティング前に実行されるため、登録順の例外です。ライフサイクル を参照してください。 - 型付きの依存関係を宣言します。 個別に定義された各インスタンスで、プロバイダーを
.use()する必要があります。親からランタイムを継承しても、子に静的な型は付与されません。コンポジション を参照してください。 - 共有プラグインには名前を付けます。
nameとseedによってフックの重複登録を防ぎます。プラグインファクトリーは、呼び出すたびに実行されます。 - 想定される失敗は返します。
status()とproblem()は通常のレスポンスを送信します。Errorを返すとエラーフックに渡され、そのルートの戻り値の型に含まれます。スローされたエラーは、その推論された型には含まれません。本番環境でも、明示したエラーの詳細が公開される場合があります。エラー を参照してください。 - スキーマから型を推論します。
UnwrapSchemaまたはUnwrapModelsを使用します。TypeBox 1.x にはスキーマの.staticがありません。ハンドラーはインラインに保ち、サービスにはプレーンな値を渡します。 - コンテキストのライフタイムを選びます。
decorateとstateは共有されます。deriveは検証後、beforeHandleキュー内でリクエストごとに実行されます。 - ガードのスキーマはデフォルトで上書きされます。 ルートは対応する継承済みスキーマを置き換えます。両方を適用するには、ガードで
schema: 'merge'を使用します。 - オプション機能は登録します。 ファイルの MIME 検証には検出器が必要です。WebSocket には
elysia/websocketが必要です。Node には@elysia/nodeと Node 22.18 以降が必要です。 - 最新の機能、例、リファレンスについては、必ず実際のドキュメントを確認してください。 このスキルはドキュメントのガイドであり、代わりになるものではありません。
Elysia 1 の場合:https://elysiajs.com/llms.txt
Elysia 2 の場合:https://next.elysiajs.com/llms.txt
最小限のアプリとテスト
プロジェクトで使用しているテストランナーを使います。この Bun の例ではポートを開きません。
// src/app.ts
import { Elysia, t } from 'elysia'
export const app = new Elysia()
.get('/users/:id', {
params: t.Object({ id: t.Number() })
}, ({ params }) => ({ id: params.id }))
export type App = typeof app
// test/app.test.ts
import { expect, test } from 'bun:test'
import { app } from '../src/app'
test('coerces the id and rejects nonnumeric input', async () => {
const response = await app.handle('/users/42')
expect(response.status).toBe(200)
expect(await response.json()).toEqual({ id: 42 })
expect((await app.handle('/users/nope')).status).toBe(422)
})
bun test とプロジェクトの型チェックを実行します。新規プロジェクトの場合は、ランタイムのセットアップ を参照してください。.listen() はプロセスのエントリーポイントに置きます。プロジェクト構成 を参照してください。
リファレンスを選ぶ
| タスク | 読むもの |
|---|---|
| バージョン、ピア依存関係、ソースとドキュメントの違い | バージョン |
| 設定、ルーティング、コンテキスト、ファイル、ストリーム | コア API |
| フック、パース、派生コンテキスト、破棄 | ライフサイクル |
| プラグイン、フックのスコープ、ガード、マクロ | コンポジション |
| スキーマ、型変換、アップロード、推論される型 | バリデーション |
| 想定されるエラー、例外マッピング、本番環境でのレスポンス | エラー |
| フォルダー、サービス、モデル、依存性注入 | プロジェクト構成 |
| Cookie の値、バリデーション、署名 | Cookie |
| WebSocket ルート | WebSocket |
| ルートのテスト、型チェック、遅延プラグイン | テスト |
| 型付きクライアント呼び出し | Eden |
| OpenAPI スキーマとドキュメント | OpenAPI |
| Bun、Node、Deno、Workers、フロントエンドフレームワークとの統合 | ランタイム |
| バンドル、AOT、バイナリ、Docker、デプロイ | デプロイ |
| トレース、スパン、リクエストの所要時間 | オブザーバビリティ |
| CORS、JWT、静的ファイル、cron、HTML、GraphQL | 公式プラグイン |
| データベースと外部ライブラリ | Drizzle、Prisma、Better Auth、AI SDK、React Email |
| v1 の構文と移行 | 移行 |
| パターンから例を探す | パターン索引 |
新規プロジェクトのデフォルト設定
Bun と t スキーマをデフォルトとして使用します。小規模なアプリは 1 つのファイルにまとめ、必要に応じて機能ごとに分割します。型付きクライアントには Eden を、API ドキュメントには OpenAPI を追加します。
コメント
Markdown 対応