sveltejs/svelteは、Svelteコンパイラとランタイムをまとめた公式モノレポです。.svelteファイルをビルド時にJavaScriptへ変換し、ランタイムはクライアント用とサーバー用に分かれています。runesと呼ばれる$state・$derived・$effectなどのAPIで、リアクティブな状態管理を実現します。
packages/svelte/package.jsonのexportsを見ると、コンパイラは./compiler、ランタイムは./internal/clientと./internal/serverに分かれています。ビルドはrollup -cで行い、generateスクリプトで型やドキュメントを生成します。benchmarking/benchmarks/reactivity配下のテストコードでは、$.state・$.derived・$.effect_rootなど内部APIを直接呼び出し、シグナルベースのリアクティブシステムを検証しています。値が変わると$.flushで更新をまとめて反映する仕組みが読み取れます。バージョン管理は.changesetフォルダのMarkdownファイルと@changesets/cliで行い、リリース時にchangeset versionでCHANGELOGとバージョンを一括更新します。
- STEP 01
pnpm installを実行すると、モノレポ全体のワークスペース依存関係が解決されます。
- STEP 02
pnpm buildを実行すると、packages/svelte内でrollup -cが走り、compiler以下にCommonJS版コンパイラファイルが生成されます。
- STEP 03
pnpm testを実行すると、vitestがpackages配下のテストを走らせ、コンパイラとランタイムの挙動を検証する結果が表示されます。
- STEP 04
pnpm benchを実行すると、benchmarking/benchmarks/reactivity配下のkairo系ベンチマークが動き、シグナル更新の速度が数値で出力されます。
- STEP 05
pnpm bench:compareを試すと、git checkoutでブランチを切り替えながら計測するため、作業ツリーが変更される点に気づきます。
- STEP 06
pnpm lintを実行すると、eslintとprettierのチェックが走り、コードスタイル違反があれば一覧で表示されます。
手元に残るのは、コンパイル済みSvelteランタイム一式と、compiler/index.jsという.svelteファイルをJSへ変換するツールです。ベンチマークを回せば、シグナル更新やSSR描画の速度を数値で比較できます。テストを実行すれば、ランタイムとコンパイラが仕様通り動くかどうかの結果が得られます。
pnpm bench:compareはgit checkoutでブランチを切り替える設計のため、作業中の変更が残っているとコミットされていない内容が失われるおそれがあります。
pnpm buildはrollupに加えてgenerateやcheck-treeshakeability.jsなど複数の後続処理を伴うため、単純な1コマンドでは終わりません。
engines指定はNode18以上・pnpm9以上のため、古い環境ではインストール自体が失敗します。
ドキュメントはrunes・legacy構文・SSRなど範囲が広く、README単体では全体像を把握しにくい構成です。
Svelte本体のコンパイラやランタイム内部構造を理解したい人、runesベースのリアクティブシステムを検証したい人に向いています。package.jsonのexports構成やベンチマークコードが実在の内部API呼び出しと一致しており、記載内容は実物のソースに基づく判断として信頼できます。ただし実運用でSvelteアプリを作るだけなら、公式チュートリアルサイトから入る方が学習コストは低いです。