Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

各 Story を CSF3.0 で書き直す #8

Merged
merged 4 commits into from
Jun 11, 2023
Merged

各 Story を CSF3.0 で書き直す #8

merged 4 commits into from
Jun 11, 2023

Conversation

wakamsha
Copy link
Owner

📝 変更情報

なぜこれをやるのか

現行の Storybook は CSF3.0 を推奨している。Storybook の恩恵を最大化するためにもこれに準拠するのが望ましい。

何を変更したのか

  • 各種 story を CSF3.0 に則って書き直した。
  • 各種コンポーネントの JSDoc が Storybook の Docs ページに表示されるよう修正した。

技術的にはどこがポイントか

CSF3.0

  • default export するオブジェクトには Meta 型を明記する。
  • 各 story には StoryObj 型を明記する。
  • storyObj には原則として以下のプロパティのみを使用するものとする。
      - args
      - argTypes
      - render
  • render に渡す引数は無名関数のため、そのままだと ESLint ルールに抵触してフックが使えない。これを解消するため、 *.stories.tsx においては react-hooks/rules-of-hooks ルールを無効化した。

JSDoc

monorepo 配下にある全パッケージの UI コンポーネントを1つの Storybook に集約しようとすると、各 UI コンポーネントの JSDoc が適切に読み込まれず Docs ページに表示されない。これを解消するため、 .storybook/main.js に以下の設定を追加した。

module.exports = {
  // ...
  typescript: {
    reactDocgenTypescriptOptions: {
      include: ['../../../**/*.tsx'],
    },
  },
};

これにより現状の monorepo 構成であっても JSDoc が Storybook にて適切に表示されるようになる。

どこまで動作確認したか

備考

🏛️ 参考文献

🚧 TODO リスト / 未完了タスク

📸 スクリーンショットや Movie ( 画面遷移、導線変更など ) 🎥

Before After
before after

wakamsha added 4 commits June 12, 2023 01:42
* 🚧 tsconfig をサブパッケージに置く

* 🚧 サブパッケージを `apps` と `packages` に分類する

📝 各ワークスペースに README を設置する

* 🔧 `app2` のビルドスクリプトを追加する

* 💊 app1, app2 に typescript をインストールする

📝
@wakamsha wakamsha merged commit 7453a0e into main Jun 11, 2023
@wakamsha wakamsha deleted the feat/csf branch June 11, 2023 16:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant