Ydant ライブラリのアーキテクチャ、API、開発フローについて回答する。プロジェクト構造、パッケージ、設計思想について質問されたときに使用。
Ydant は JavaScript ジェネレーターを DSL として使う実験的 DOM レンダリングライブラリです。
@ydant/core は「何をレンダリングするか」を知らない純粋な処理系:
@ydant/base は「どのようにレンダリングするか」を知る利用者向け API:
| パッケージ | 役割 |
|---|---|
@ydant/core | 処理系、プラグインシステム、mount() |
@ydant/base | 要素ファクトリ、プリミティブ、Slot |
@ydant/reactive | Signal ベースのリアクティビティ |
@ydant/context |
| Context API |
@ydant/router | SPA ルーティング |
@ydant/async | Suspense、ErrorBoundary |
@ydant/transition | CSS トランジション |
// Props なし
function MyComponent(): Render {
return div(function* () {
yield* text("Hello");
});
}
// Props あり
const MyComponent: Component<Props> = (props) => {
return div(function* () {
yield* text(props.message);
});
};
let countSlot: Slot;
countSlot = yield * div(() => [text(`Count: ${count}`)]);
// 後から部分更新
countSlot.refresh(() => [text(`Count: ${newCount}`)]);
pnpm install # 依存関係インストール
pnpm -r run build # 全パッケージビルド
pnpm run dev # dev サーバー起動
pnpm test:run # テスト(単発)
pnpm lint:fix # リント + 自動修正
pnpm typecheck # 型チェック
| 情報 | 配置先 |
|---|---|
| API 仕様 | packages/*/README.md |
| 使用例・機能一覧 | README.md / README.ja.md |
| 実装パターン | examples/*/README.md |
| 命名規則 | docs/CONVENTIONS.md |
| 開発ガイド | CLAUDE.md |
| プロジェクト知見 | docs/PROJECT_KNOWLEDGE.md |
create*: 設定・構築を伴う生成(createBasePlugin, createContext など)get*: 状態取得(getRoute など)詳細は docs/CONVENTIONS.md を参照。
7つの段階的な例が examples/ にあります: