本プロジェクトおよび組織 (PaiForge) 全体における技術スタックの選定理由と標準化の方針を記載します。 プロジェクトの種別(ライブラリかアプリケーションか)によって標準とするツールが異なります。
採用技術: npm
対象: riichi-mahjong など、npm レジストリへの公開を主目的とするプロジェクト。
選定理由:
- 標準化と安全性 (Standard & Security):
- npm は Node.js の標準であり、公開レジストリそのものです。公開先と同じツールチェーンを使用することで、互換性の問題を最小限に抑えます。
- 規模とオーバーヘッド (Scale):
- ライブラリは依存関係が比較的少なく、pnpm の恩恵(ディスク節約等)よりも、セットアップの単純さや標準ツールであることのメリットが上回ります。
- 互換性 (Compatibility):
- 利用者が
npm installすることを前提とするため、開発環境も合わせることで環境差異によるトラブルを防ぎます。
- 利用者が
採用技術: pnpm
対象: エンドユーザー向けアプリケーション、Webサービス、または大規模なモノレポ構成のプロジェクト。
選定理由:
- パフォーマンスと効率 (Performance & Efficiency):
- アプリケーションは依存ライブラリが膨大になる傾向があります。pnpm のコンテンツアドレス可能なストア機能により、インストール速度の向上とディスク容量の大幅な節約が見込めます。
- 厳格な依存関係管理 (Strictness):
- pnpm は
node_modulesをフラットに展開せず、package.json に明記されていない依存パッケージへのアクセス(Phantom Dependencies)を防止します。これにより、環境に依存しない堅牢なビルドが保証されます。
- pnpm は
- モノレポサポート (Monorepo Support):
- ワークスペース機能が強力であり、複数のパッケージを含む大規模プロジェクトの管理に適しています。