storybook-rsbuild について
storybook-rsbuildは、RsbuildでのStorybook導入や既存環境からの移行を支援するエージェントスキルです。上流ドキュメントに基づき、互換性の確認から移行後の検証まで案内します。
主な機能
- 01Storybookの新規セットアップ
- 02webpackとViteからの移行
- 03上流ドキュメントを参照
- 04アドオンと設定の維持
- 05ビルドとブラウザーでの検証
活用シーン
- 01RsbuildプロジェクトへのStorybook導入
- 02既存Storybookビルダーの移行
- 03フレームワークのバージョン互換性確認
- 04Storybook移行結果の検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ rstackjs/ agent-skills --skill storybook-rsbuildインストール後、Claude Code で/storybook-rsbuildを入力して読み込まれたか確認します。
詳細
Storybook Rsbuild
目標
Rsbuild で Storybook をセットアップするか、既存の Storybook を移行します。バージョンの互換性、パッケージ名、インストールコマンド、設定の変換パターンなど、正確な情報は上流のドキュメント storybook.rsbuild.rs にあります。このスキルは作業の振り分けと行動チェックリストを担い、ドキュメントの内容を重複して記載するものではありません。
原則(必ず従うこと)
-
信頼できる情報源は上流のドキュメントです。 バージョン表、インストールコマンド、設定の変換パターンについて、該当する
storybook.rsbuild.rsのページを取得してください。トレーニングで得た知識をもとに、バージョン指定やパッケージ名を推測しないでください。エコシステムの変化はモデルの既存知識より速いためです。 -
フレームワークガイドの Requirements テーブルをもとにバージョンを固定します。 各フレームワークガイドのページ(例:
https://storybook.rsbuild.rs/guide/framework/react)には、標準となる互換バージョン範囲が記載された Requirements セクションがあります。バージョン指定の正規の情報源はここです。新規セットアップでは、最新の安定版storybookメジャーバージョンと、それに対応するstorybook-rsbuildメジャーバージョンをインストールしてください。ほかの場所にあるコードスニペットのバージョン番号をもとに固定しないでください。正規の情報源はドキュメントのみです。 -
@rsbuild/coreを直接指定します。storybook-<framework>-rsbuildは@rsbuild/coreをピア依存関係として指定していますが、バージョン指定とロックファイルの監査を明確にし、将来フレームワークパッケージのリリースでピア依存関係が削除されてもビルドが予期せず壊れないよう、プロジェクト自身のdevDependenciesにも@rsbuild/coreを追加してください。 -
移行は順序の決まった2つのフェーズを実行する1つの作業です。両方とも必須です。 フェーズA:新しいフレームワークパッケージをインストールして設定を更新します。旧フレームワークパッケージ、旧ビルダーパッケージ、旧
webpackFinal/viteFinalブロックはそのまま残し、検証でロールバックできる状態にしておきます。フェーズB:検証に合格したら、同じ作業内ですぐに旧フレームワークパッケージ(例:@storybook/react-webpack5、@storybook/vue3-vite)、旧ビルダーパッケージ(例:@storybook/builder-webpack5、@storybook/builder-vite)、旧webpackFinal/viteFinalブロックを削除します。両方のビルダーのフレームワークパッケージがpackage.jsonに残ったまま終了する移行は未完了です。これらを残すことは、このスキルの評価で最もよく見られる、気付かれにくいリグレッションです。フェーズAだけでは有効な終了地点になりません。検証を実行した場合は、クリーンアップも必ず実行してください。 -
アドオンを保持し、黙って削除しないでください。 移行時、webpack 専用アドオン(例:
@storybook/addon-styling-webpack)は、webpackAddonsを介して渡し(上流の自動変換に処理させる)、または Rsbuild ネイティブの同等パイプライン(@rsbuild/plugin-postcss、tools.postcssなど)に置き換える必要があります。スタイリングアドオンを削除し、storybook buildに合格しても、ストーリーのツリー表示が視覚的に壊れている移行はリグレッションです。 -
作業範囲を守ります。 モノレポでは、ストーリーをホストするパッケージのみを変更してください。移行に厳密に必要な場合を除き、ビジネスソースファイルは編集しないでください。
ステップ1 — シナリオの判定
package.json とプロジェクト構成を確認し、既存の Storybook の状態を判定します。
.storybook/ディレクトリを確認します(モノレポの場合は、ルートと各パッケージの両方を確認します)package.jsonにあるstorybookスクリプト、または依存関係/devDependencies 内の@storybook/*/storybook-*-rsbuildを確認します- Storybook が存在し、すでに
storybook-*-rsbuildを使用している場合 → セットアップ済みです。必要に応じて設定またはトラブルシューティングに進みます - Storybook が存在し、Rsbuild 以外のビルダー(
@storybook/*-webpack5、@storybook/*-viteなど)を使用している場合 → 移行ワークフローに進みます - Storybook が見つからない場合 → 新規セットアップワークフローに進みます
新規セットアップのワークフロー
1. エコシステムとの統合を検出する
package.json の dependencies と devDependencies を確認し、次の順に調べます。
| シグナル | エコシステム | 統合ガイド |
|---|---|---|
@rslib/core | Rslib | https://storybook.rsbuild.rs/guide/integrations/rslib |
@modern-js/app-tools | Modern.js | https://storybook.rsbuild.rs/guide/integrations/modernjs |
@rsbuild/core を含まない @rspack/core | Pure Rspack | https://storybook.rsbuild.rs/guide/integrations/rspack |
該当する場合は、統合ガイドを読み、以下の手順と併せてその制約を上乗せして適用します。
2. UI フレームワークを検出する
アプリの依存関係(react、vue、lit など)から UI フレームワークを推定します。
| UI フレームワーク | フレームワークパッケージ | ガイド |
|---|---|---|
| React | storybook-react-rsbuild | https://storybook.rsbuild.rs/guide/framework/react |
| Vue 3 | storybook-vue3-rsbuild | https://storybook.rsbuild.rs/guide/framework/vue |
| Vanilla JS/TS | storybook-html-rsbuild | https://storybook.rsbuild.rs/guide/framework/vanilla |
| Web Components | storybook-web-components-rsbuild | https://storybook.rsbuild.rs/guide/framework/web-components |
| React Native Web | storybook-react-native-web-rsbuild | https://storybook.rsbuild.rs/guide/framework/react-native-web |
3. Storybook をセットアップする
- モノレポでは、ストーリーを配置するパッケージで作業します
- 上記で該当したフレームワークガイドを読み、それに従います。
storybookの最新の安定版メジャーバージョンと、対応するstorybook-<framework>-rsbuildのメジャーバージョンをインストールします(原則 2) @rsbuild/coreをstorybook-<framework>-rsbuildと並べて、devDependenciesに直接追加します(原則 3).storybook/main.*で正しいframework: '<storybook-*-rsbuild>'を使用していることを確認しますpackage.jsonにstorybook devとstorybook buildのスクリプトがあることを確認します- ストーリーファイルがまだない場合は、検証の手順 2 でレンダリングできるように、最小限のサンプルストーリーを少なくとも 1 つ作成します(例:
src/stories/Example.stories.*) - 以下の検証を実行します
移行ワークフロー
上流の移行ガイドを確認してください:https://storybook.rsbuild.rs/guide/migration
以下の手順を順番どおりに実行してください:
- 移行タイプを判定する —
.storybook/main.*のframeworkフィールドやcore.builder、およびpackage.jsonの依存関係を確認し、「from webpack5」か「from Vite」に分類して、移行ガイドの該当するセクションを選択します - バージョンの互換性を解決する — 移行ガイドの「Version compatibility」セクションを確認し、インストール済みの Storybook のバージョンに応じた
storybook-rsbuildのメジャーバージョンを選択します - パッケージを置き換える — プロジェクトのパッケージマネージャー(ロックファイルから判定)を使って、移行ガイドのインストール/削除の対応表を適用します。移行に必要なパッケージのみ変更してください。新しいフレームワークパッケージと並行して、
@rsbuild/coreを直接の devDep として必ず追加してください(原則 3)。古いフレームワークパッケージや古い devDeps はまだ削除しないでください。削除するのは検証後です(原則 4) .storybook/main.*を更新する — 検出したフレームワークに応じて、移行ガイドに記載されたとおりに設定を変更します- カスタムビルダーフックを移行する — 古いビルダーフック(
webpackFinal/viteFinal)を検索し、見つかった場合は上流の設定ガイド(https://storybook.rsbuild.rs/guide/configuration)に従って変換します - アドオンの互換性に対処する — 最初はアドオンを変更せずに維持します。webpack 専用のアドオンを変更する必要がある場合は、上流の自動変換に任せるため
webpackAddons経由で指定するか、Rsbuild ネイティブの同等のアドオンに置き換えます。黙って削除してはいけません(原則 5)。推奨される対処法については、移行ガイドのアドオンセクションを参照してください - 検証してからクリーンアップする — 両方必須です — 以下の検証を実行します。検証に合格したら、完了を報告する前に、同じタスク内で以下のすべてを実行してください(原則 4):
package.jsonの devDependencies から古いフレームワークパッケージを削除します(例:@storybook/react-webpack5、@storybook/vue3-webpack5、@storybook/react-vite、@storybook/vue3-vite、@storybook/html-webpack5、@storybook/web-components-webpack5など)- 古いビルダーパッケージが個別に記載されている場合は削除します(例:
@storybook/builder-webpack5、@storybook/builder-vite) .storybook/main.*から古いwebpackFinal/viteFinalブロックを削除します- 利用するものがなくなった、古いビルダー専用の devDeps を削除します
pnpm install(またはプロジェクトのパッケージマネージャーに相当するコマンド)を再実行し、ロックファイルにクリーンアップの内容を反映します
バージョン表、パッケージ名、変換パターンなど、事実に基づく対応情報が必要で、このスキルに記載されていない場合は、上流のドキュメントを取得してください。推測してはいけません。
検証
storybook devがエラーなしで起動する- ブラウザーで少なくとも 1 つのストーリーが正しく表示される(開発サーバーが問題なく起動するだけでは不十分です。
storiesの glob の不足やフレームワークの設定不備は、この段階で初めて明らかになることがあります) - HMR が動作する
storybook buildが完了する- 起動ログを確認し、Rsbuild ビルダーが有効になっていることを確認する(webpack/vite ではないこと)
トラブルシューティング
- キャッシュの問題:
node_modules/.cache/storybookを削除して再試行します - 設定の残存:移行後に dev が失敗する場合は、問題を切り分けるため、一時的にカスタムの
rsbuildFinalブロックを削除してから、段階的に再追加します - デバッグやその他の問題については、上流の移行ガイドの「Debugging」セクションと https://storybook.rsbuild.rs/guide/configuration を参照してください
エッジケース
- モノレポ:ストーリーをホストするパッケージを特定し、ルートではなくそのパッケージで作業します
- 複数の
.storybook/ディレクトリ:package.jsonのスクリプトで参照されているものを選択します - TS パスエイリアス:移行後もエイリアスが維持されていることを確認します。
rsbuildFinalの設定方法については、上流の設定ガイドを参照してください
設定
rsbuildFinal、ビルダーオプション、TypeScript、フレームワーク固有のオプションについては、https://storybook.rsbuild.rs/guide/configuration を確認してください