
よっしー
こんにちは。よっしーです(^^)
今日は、SvelteKitのリファレンスについて解説して います。
背景
SvelteKitのリファレンスについて調査する機会がありましたので、その時の内容を備忘として記事に残しました。
CLIツール(sv)
コマンドラインインターフェース(CLI)であるsv
は、Svelteアプリケーションの作成と保守のためのツールキットです。
Storybookとは
Storybookはフロントエンドコンポーネントのワークショップです。
使用方法
npx sv add storybook
導入されるもの
- 他のアドオンと同じ便利な
sv
CLIからnpx storybook init
が自動的に実行されます - SvelteKitまたはSvelteとVite用のStorybookが、デフォルト設定とともに提供され、多くのSvelteKitモジュールの簡単なモック、自動リンク処理などが含まれます
解説
Storybookは、UIコンポーネントを独立して開発・テスト・ドキュメント化するためのツールです。コンポーネントライブラリを構築する際や、大規模なアプリケーションでコンポーネントを管理する際に非常に役立ちます。
基本的な使用例
- インストール後の起動
# Storybookを起動
npm run storybook
- コンポーネントのストーリー作成例
例えば、Button.svelte
というコンポーネントがある場合:
<!-- Button.svelte -->
<script>
export let primary = false;
export let label = 'Button';
</script>
<button class:primary>
{label}
</button>
<style>
button {
border: 1px solid #ccc;
padding: 0.5rem 1rem;
border-radius: 4px;
}
.primary {
background-color: #4c88e8;
color: white;
}
</style>
このコンポーネントのストーリーを以下のように作成します:
// Button.stories.js
import Button from './Button.svelte';
export default {
title: 'Components/Button',
component: Button,
argTypes: {
primary: { control: 'boolean' },
label: { control: 'text' }
}
};
const Template = (args) => ({
Component: Button,
props: args
});
export const Default = Template.bind({});
Default.args = {
primary: false,
label: '通常ボタン'
};
export const Primary = Template.bind({});
Primary.args = {
primary: true,
label: 'プライマリボタン'
};
- SvelteKitのページコンポーネントのストーリー
SvelteKitのページをStorybookでテストする例:
// Page.stories.js
import Page from '../routes/about/+page.svelte';
export default {
title: 'Pages/About',
component: Page
};
export const Default = {};
Storybookの利点
- コンポーネントの分離開発: 各コンポーネントを独立して開発・テストできます
- インタラクティブなドキュメント: 開発者やデザイナーが参照できるコンポーネントカタログになります
- さまざまな状態のテスト: 異なるpropsや状態でコンポーネントを簡単に確認できます
- アクセシビリティテスト: アドオンを使ってアクセシビリティの問題を検出できます
- ビジュアルリグレッションテスト: 変更による視覚的な違いを検出できます
npx sv add storybook
コマンドを実行することで、Svelteプロジェクトに適切な設定が自動的に追加され、すぐにStorybookを使い始めることができます。
おわりに
今日は、 SvelteKitのリファレンスについて解説しました。

よっしー
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント