Svelte で YAML ファイルをインポートして使う方法
Svelte (SvelteKit) には YAML ファイルを直接インポートして JavaScript オブジェクトして扱う仕組みはありませんが、raw
インポートの仕組みを使えば、YAML ファイルを文字列データとしてそのまま読み込むことができます(これは SvelteKit がビルドに使っている Vite の仕組みです)。
このようにして読み込んだ YAML テキストを、Node.js の YAML ライブラリなどでパースすれば、YAML ファイルの内容を JavaScript オブジェクトとして扱うことができます。 ビルド時に処理を完結させることができるので、例えば、static-adapter を使った静的ビルド (SSG) が必要な環境でも利用できます。
実装例
YAML ファイルを扱うために js-yaml
ライブラリを使うので、次のようにしてインストールしておきます。
サンプルの YAML ファイルとして、下記のようなゲームソフト情報を含んだ games.yaml
を使います。
この YAML ファイルはビルド時にインポートするので、static
ディレクトリではなく src
ディレクトリのどこかに配置します(ここでは、lib/assets
というディレクトリに配置しています)。
次の Svelte コンポーネントでは、ビルド時に YAML ファイルを読み込んで、JavaScript オブジェクトと扱えるようにしていします。
実装には TypeScript を使っていますが、raw
インポートした YAML ファイルからは型情報を推測してくれないようなので、自分で Game
型を定義しています。
次のような感じの内容で出力されれば成功です。
<ul>
<li>シャドウラン (1996-02-23) 7800円</li>
<li>トムキャットアレイ (1994-12-22) 7800円</li>
<li>真・女神転生 (1994-02-25) 価格不明</li>
</ul>
なお、JSON ファイルであれば、raw
インポートを使わずに、そのままインポートすることができます。