-
Notifications
You must be signed in to change notification settings - Fork 1
chore: textlint設定の更新とmarkdownのリント修正 #1169
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
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,143 @@ | ||
| --- | ||
| description: | ||
| globs: | ||
| alwaysApply: true | ||
| --- | ||
| # プロジェクト概要 | ||
|
|
||
| このリポジトリは、Zennの記事とサンプルコードを1つのモノレポで管理しています。サンプルコードが常に動作する状態を維持するために継続的にメンテナンスされています。 | ||
|
|
||
| ## 技術スタック | ||
|
|
||
| - **パッケージマネージャー**: Bun | ||
| - **テストフレームワーク**: Vitest | ||
| - **言語**: TypeScript | ||
| - **フロントエンドフレームワーク**: React | ||
| - **CI/CD**: GitHub Actions | ||
| - **コードカバレッジ**: Codecov | ||
|
|
||
| ## 主要機能 | ||
|
|
||
| - 記事とサンプルコードを統合したモノレポ構造 | ||
| - Vitestによる自動テスト | ||
| - vitest-axeによるアクセシビリティテスト | ||
| - コードカバレッジレポート | ||
| - TypeScriptサポート | ||
| - Reactコンポーネントのテスト | ||
|
|
||
| ## プロジェクト構造 | ||
|
|
||
| ### ルートディレクトリ | ||
| - `/articles`: Zennの記事を格納 | ||
| - 各記事はMarkdownファイルとして管理 | ||
| - フロントマターで記事のメタデータを管理 | ||
| - 画像は`/articles/images`に配置 | ||
|
|
||
| - `/src`: サンプルコードの実装を格納 | ||
| - 各サンプルは独立したディレクトリとして管理 | ||
| - テストファイルは実装と同じディレクトリに配置 | ||
| - 共通の設定ファイルはルートに配置 | ||
|
|
||
| ### サンプルプロジェクト | ||
| - `/src/jest-same-example-next`: Jestのテストファイル構成例 | ||
| - Next.jsプロジェクトでのテストファイル配置例 | ||
| - テストと実装を同じディレクトリに配置する構成 | ||
|
|
||
| - `/src/jest-same-example-rollup`: Rollupを使用したJestの例 | ||
| - Rollupでバンドルするプロジェクトのテスト構成例 | ||
| - モジュールバンドリング時のテスト設定例 | ||
|
|
||
| - `/src/react-if-sample`: Reactのif文パターン | ||
| - 条件分岐の実装パターン集 | ||
| - コンポーネントの条件付きレンダリング例 | ||
|
|
||
| - `/src/jest-ts-auto-mock-sample`: モックデータ生成の例 | ||
| - TypeScriptの型定義からモックデータを自動生成 | ||
| - テストデータの管理方法の例 | ||
|
|
||
| ## 開発環境のセットアップ | ||
|
|
||
| ```bash | ||
| # .node-versionで指定されたNode.jsバージョンをインストール | ||
| $ cat .node-version | nodenv install | ||
|
|
||
| # Bunで依存関係をインストール | ||
| $ bun install | ||
| ``` | ||
|
|
||
| ## テスト | ||
|
|
||
| プロジェクトではVitestを使用してテストを行い、以下の機能を提供しています: | ||
| - Happy DOMテスト環境 | ||
| - Reactテストサポート | ||
| - vitest-axeによるアクセシビリティテスト | ||
| - Istanbulによるコードカバレッジレポート | ||
| - Canvasモックサポート | ||
|
|
||
| ### テストの書き方 | ||
| - テストファイルは実装ファイルと同じディレクトリに配置 | ||
| - テストファイル名は`*.test.ts`または`*.test.tsx`の形式 | ||
| - コンポーネントテストは`__tests__`ディレクトリに配置可能 | ||
| - テストカバレッジは80%以上を維持 | ||
|
|
||
| ## CI/CD | ||
|
|
||
| - GitHub Actionsによる自動テスト | ||
| - Codecovによるカバレッジレポート | ||
| - 自動テストワークフローバッジ | ||
| - カバレッジバッジ | ||
|
|
||
| ## 記事一覧 | ||
|
|
||
| このリポジトリには以下の記事が含まれています: | ||
| - Jestのテストファイル構成 | ||
| - Reactのif文パターン | ||
| - モックデータ生成 | ||
| - Laravel API環境の構築 | ||
| - Next.js/Serverless FrameworkでのISR実装 | ||
| - PlaywrightによるE2Eテスト | ||
| - テストとStorybookのセットアップ | ||
| - axeによるアクセシビリティテスト | ||
|
|
||
| ## 最近の移行 | ||
|
|
||
| プロジェクトは最近以下の移行を行いました: | ||
| - パッケージマネージャーをYarnからBunへ | ||
| - テストフレームワークをJestからVitestへ | ||
|
|
||
| これらの移行により以下の改善が実現されました: | ||
| - パッケージインストール速度の向上 | ||
| - 設定の簡素化 | ||
| - TypeScriptサポートの強化 | ||
| - テスト実行パフォーマンスの向上 | ||
|
|
||
| ## 開発フロー | ||
|
|
||
| ### 新規機能追加 | ||
| 1. 新しいサンプルプロジェクトのディレクトリを作成 | ||
| 2. 必要な依存関係をインストール | ||
| 3. テストを実装 | ||
| 4. コードカバレッジを確認 | ||
| 5. PRを作成 | ||
|
|
||
| ### 記事の追加・更新 | ||
| 1. `/articles`にMarkdownファイルを作成 | ||
| 2. フロントマターを設定 | ||
| 3. サンプルコードとリンク | ||
| 4. プレビューで確認 | ||
| 5. PRを作成 | ||
|
|
||
| ## トラブルシューティング | ||
|
|
||
| ### よくある問題 | ||
| - **Bunのインストールエラー** | ||
| - Node.jsのバージョンを確認 | ||
| - `bun install`を再実行 | ||
|
|
||
| - **テストの実行エラー** | ||
| - `node_modules`を削除して再インストール | ||
| - テスト環境の設定を確認 | ||
|
|
||
| - **TypeScriptの型エラー** | ||
| - `tsconfig.json`の設定を確認 | ||
| - 型定義ファイルの更新 | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -57,3 +57,4 @@ test-results | |
| trace.zip | ||
| .jest-test-results.json | ||
| junit.xml | ||
| settings.local.json | ||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,107 @@ | ||||||||||||||||||||||
| # CLAUDE.md | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ## プロジェクト概要 | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| Zenn の記事とサンプルコードを 1 つのモノレポで管理しているリポジトリです。サンプルコードは常に動作する状態を維持するため継続的にメンテナンスされています。`/articles`に Zenn 記事(フロントマター付き Markdown)、`/src`にサンプルコード実装が格納されています。 | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ## 主要コマンド | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ### 開発環境セットアップ | ||||||||||||||||||||||
| ```bash | ||||||||||||||||||||||
| # .node-versionで指定されたNode.jsバージョンをインストール | ||||||||||||||||||||||
| cat .node-version | nodenv install | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| # Bunで依存関係をインストール | ||||||||||||||||||||||
| bun install | ||||||||||||||||||||||
|
Comment on lines
+13
to
+17
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. コマンド例に
Suggested change
|
||||||||||||||||||||||
| ``` | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ### テスト実行 | ||||||||||||||||||||||
| ```bash | ||||||||||||||||||||||
| # 全ワークスペースのテストを並列実行 | ||||||||||||||||||||||
| bun run vitest | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| # CI用(カバレッジとJUnit出力付き) | ||||||||||||||||||||||
| bun run vitest-ci | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| # ウォッチモードでテスト実行 | ||||||||||||||||||||||
| bun run vitest-watch | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| # 単一テストファイルの実行(ワークスペースディレクトリから) | ||||||||||||||||||||||
| bunx vitest path/to/test.spec.tsx | ||||||||||||||||||||||
| ``` | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ### 型チェックとリント | ||||||||||||||||||||||
| ```bash | ||||||||||||||||||||||
| # 全ワークスペースの型チェック | ||||||||||||||||||||||
| bun run type-check | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| # ウォッチモードで型チェック | ||||||||||||||||||||||
| bun run type-check-watch | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| # TypeScript/JavaScriptファイルのリント | ||||||||||||||||||||||
| bun run lint-ts | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| # Markdown記事のリント | ||||||||||||||||||||||
| bun run lint-md | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| # 全ての問題を自動修正 | ||||||||||||||||||||||
| bun run fix | ||||||||||||||||||||||
| ``` | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ### ビルドと開発 | ||||||||||||||||||||||
| ```bash | ||||||||||||||||||||||
| # 全ワークスペースを並列ビルド | ||||||||||||||||||||||
| bun run build | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| # Zenn記事をローカルでプレビュー | ||||||||||||||||||||||
| bun run start | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| # 開発サーバー起動(src/next-sampleなど特定ワークスペースから) | ||||||||||||||||||||||
| bun run dev | ||||||||||||||||||||||
| ``` | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ### PlaywrightでのE2Eテスト | ||||||||||||||||||||||
| ```bash | ||||||||||||||||||||||
| # Playwrightブラウザをインストール | ||||||||||||||||||||||
| bun playwright install | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| # E2Eテスト実行(src/playwright-sampleから) | ||||||||||||||||||||||
| bun run e2e-chromium | ||||||||||||||||||||||
| ``` | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ## アーキテクチャ | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ### モノレポ構造 | ||||||||||||||||||||||
| - Bun ワークスペースと連携した Lerna で複数パッケージを管理 | ||||||||||||||||||||||
| - `/src`内の各サンプルプロジェクトは独立したワークスペース(独自の`package.json`を持つ) | ||||||||||||||||||||||
| - ルートレベルのスクリプトが全ワークスペースでの並列実行を統括 | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ### テストアーキテクチャ | ||||||||||||||||||||||
| - **フレームワーク**: パフォーマンスと設定の簡素化のため Jest から Vitest へ移行 | ||||||||||||||||||||||
| - **テスト環境**: 高速 DOM テスト用の Happy DOM | ||||||||||||||||||||||
| - **Reactテスト**: `@testing-library/react`と`@vitejs/plugin-react`を使用 | ||||||||||||||||||||||
| - **アクセシビリティテスト**: 自動アクセシビリティチェック用の`vitest-axe`を統合 | ||||||||||||||||||||||
| - **カバレッジ**: Codecov 統合付きの Istanbul プロバイダー | ||||||||||||||||||||||
| - **テストファイル**: 実装ファイルと同じ場所に配置(例:`Main.tsx`と`Main.spec.tsx`) | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ### CI/CDパイプライン | ||||||||||||||||||||||
| - **GitHub Actions**: master へのプッシュと PR 時の自動テスト | ||||||||||||||||||||||
| - **テスト実行**: リント、型チェック、ユニットテスト、end-to-end テストを実行 | ||||||||||||||||||||||
| - **カバレッジレポート**: Codecov へ自動アップロード | ||||||||||||||||||||||
| - **Chromatic統合**: Storybook コンポーネントのビジュアルリグレッションテスト | ||||||||||||||||||||||
| - **Launchable統合**: テストインテリジェンスとフレーキーテスト検出 | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ### 主要な技術的決定 | ||||||||||||||||||||||
| - **パッケージマネージャー**: 高速インストールと組み込み TypeScript サポートのため Yarn から Bun へ移行 | ||||||||||||||||||||||
| - **テストフレームワーク**: ESM サポート改善と実行速度向上のため Jest から Vitest へ移行 | ||||||||||||||||||||||
| - **設定**: ルートの共有 Vitest 設定とワークスペース固有のオーバーライド | ||||||||||||||||||||||
| - **コード品質**: ESLint と Prettier、Husky でのプリコミットフック、lint-staged での増分リント | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| ## 最近の移行 | ||||||||||||||||||||||
|
|
||||||||||||||||||||||
| プロジェクトは最近大規模な移行を実施: | ||||||||||||||||||||||
| 1. **Yarn → Bun**: パッケージインストール速度の向上とスクリプトの簡素化 | ||||||||||||||||||||||
| 2. **Jest → Vitest**: TypeScript サポート改善、テスト実行高速化、設定の簡素化 | ||||||||||||||||||||||
| 3. これらの移行により設定ファイルがクリーンになり、開発体験が向上 | ||||||||||||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
cat .node-version | nodenv installは少し冗長です。nodenv installコマンドは、引数なしで実行されるとカレントディレクトリの.node-versionファイルを自動的に読み込むため、よりシンプルに$ nodenv installと記述できます。