monorepo-management について
複数の相互依存パッケージを持つモノレポの構成、ビルド、依存関係、デプロイを扱うスキルです。npm workspaces、Lerna、Turborepo、Nxの設定とワークフローのガイドを含みます。
主な機能
- 01ワークスペースとディレクトリ構成ガイド
- 02パッケージ間の依存関係管理
- 03Lerna、Turborepo、Nxの設定
- 04CI/CDとビルドキャッシュのガイド
- 05パッケージのバージョン管理
活用シーン
- 01マルチパッケージプロジェクトの構成
- 02サービス間でのライブラリ共有
- 03ワークスペース依存関係の管理
- 04変更の影響を受けるパッケージだけをビルド
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ aj-geddes/ useful-ai-prompts --skill monorepo-managementインストール後、Claude Code で/monorepo-managementを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/cicd-for-monorepo.mdlerna-commands.mdmonorepo-directory-structure.mdnpm-workspaces-configuration.mdturborepo-commands.mdversion-management-across-packages.mdworkspace-dependencies.mdscripts/validate-pipeline.shtemplates/pipeline.yaml詳細
モノレポの管理
目次
概要
ビルド効率、依存関係の管理、デプロイの調整を維持しながら、相互に依存する複数のパッケージをサポートする、スケーラブルなモノレポ構造を構築します。
使用する場面
- 複数パッケージのプロジェクト
- サービス間で共有するライブラリ
- マイクロサービスアーキテクチャ
- プラグインベースのシステム
- マルチアプリプラットフォーム(ウェブ+モバイル)
- ワークスペースの依存関係管理
- チーム開発の拡大
クイックスタート
最小限の動作例:
{
"name": "monorepo-root",
"version": "1.0.0",
"private": true,
"workspaces": ["packages/*", "apps/*"],
"devDependencies": {
"lerna": "^7.0.0",
"turbo": "^1.10.0"
},
"scripts": {
"lint": "npm run lint -r",
"test": "npm run test -r",
"build": "npm run build -r",
"clean": "npm run clean -r"
}
}
リファレンスガイド
references/ ディレクトリにある詳細な実装ガイド:
| ガイド | 内容 |
|---|---|
| Npm Workspaces の設定 | Npm Workspaces の設定、Lerna の設定、Turborepo の設定、Nx Workspace の設定 |
| モノレポのディレクトリ構造 | モノレポのディレクトリ構造 |
| ワークスペースの依存関係 | ワークスペースの依存関係 |
| Lerna コマンド | Lerna コマンド |
| Turborepo コマンド | Turborepo コマンド |
| モノレポの CI/CD | モノレポの CI/CD |
| パッケージ間のバージョン管理 | パッケージ間のバージョン管理 |
ベストプラクティス
✅ 推奨事項
- 依存関係にはワークスペースプロトコルを使用します
- 一貫性を保つため、共有の tsconfig を導入します
- CI/CD でビルド成果物をキャッシュします
- 不要なビルドを避けるため、CI でパッケージをフィルタリングします
- 共通の依存関係をホイストします
- ワークスペースの構成を文書化します
- 一貫したバージョニング戦略を使用します
- ワークスペース全体でコミット前フックを導入します
- パッケージ間の依存関係をテストします
- 適切な場合は、パッケージを個別にバージョン管理します
❌ 避けるべきこと
- 循環依存関係を作成すること
- ワークスペース内のパッケージにハードコードされたバージョンを使用すること
- 1つのパッケージだけが変更された場合に、すべてのパッケージをビルドすること
- ロックファイルの更新を忘れること
- ワークスペースの境界を無視すること
- 密結合したパッケージを作成すること
- 依存関係の管理を省略すること
- パッケージごとに異なるツールを使用すること
コメント
Markdown 対応