こんにちは! 株式会社アルシエで教育に関するサポートをしている岸本です。
今回は「Turborepo」についてお伝えしていきます。
Turborepoは、モノリポジトリ内でTypeScriptとJavaScriptプロジェクトを管理するための優れたツールで、高速なビルドシステムや依存関係管理の機能を提供します。
Turborepoの機能
高速なビルド
Turborepoは高速はビルドをサポートし、コード変更がある場合でも必要な部分だけを再ビルドすることができます。
これにより、ビルド時間を大幅に短縮できます。
ローカル計算キャッシュ
ローカルでの計算キャッシュを使用することで、ビルドのパフォーマンスを向上させ、開発者の効率を高めます。
分散計算キャッシュ
複数の開発者が協力してプロジェクトを進める場合、分散計算キャッシュが役立ちます。
これにより、ビルドキャッシュを共有し、複数の環境でコード変更を迅速に反映できます。
ローカルタスクオーケストレーション
Turborepoは異なるプロジェクト間での依存関係を効果的に管理し、ローカルでタスクを調整します。
これにより、プロジェクトの整合性を維持できます。
ソースコードの共有
Turborepoを使用することで、異なるプロジェクト間でコードを簡単に共有でき、コードの再利用を促進します。
なぜTurborepoなのか?
Turborepoは、モノリポジトリでの開発を効率的に行うためのツールです。
モノリポジトリは、複数のプロジェクトやコンポーネントを単一のリポジトリで管理するアプローチで、プロジェクト全体を管理できます。
Turborepoは、このアプローチをより強力にサポートします。
段階的な導入が可能で、簡単にプロジェクトに統合できます。
また、パッケージのインストールには、引き続きpmpmやnpmを使用できます。
Turborepoはこれらのパッケージマネージャーを補完し、効率的なタスク実行が可能です。
ポリリポジトリのサポート
Turborepoはポリリポジトリもサポートをしています。
ポリリポジトリでも多くのタスクが実行され、Turborepoの高速性を活かすことができます。
実行時のオーバーヘッドがゼロ
Turborepoはランタイムコードを変更せず、ソースマップを変更しません。
ブラウザのプロファイル
ビルドプロファイルを作成し、EdgeやChromeブラウザにインポートして、どのタスクが最も時間がかかるかを特定できます。
これらの機能により、Turborepoはモノリポジトリとポリリポジトリの両方で効率的な開発をサポートします。
Turborepoはいつ使用するのか
スクリプトは相互に多くの依存関係がある場合
プロジェクト内で多くのスクリプトやモジュールがお互いに依存している場合、Turborepoは依存関係の管理を効率にして、一貫性のあるビルドと実行を提供します。
タスクを並行して実行したい場合
マルチプロジェクト環境で、複数のタスクを同時に実行したい場合、Turborepoはタスクの並行実行と効率的なタスク管理をサポートします。
JavaScriptとTypeScriptのトップレベルの依存関係管理が必要な場合
プロジェクト内でJavaScriptとTypeScriptのコードが共存する場合、Turborepoはトップレベルの依存関係管理を統一化し、開発者が依存関係を管理しやすくします。
統一されたlint設定が必要な場合
コードの品質を維持するために一貫したlint設定が必要な場合、Turborepoはlintルールを統一化して、一貫性のあるコーディング規約をします。
JavaScriptとTypeScriptのトップレベルの依存関係管理が必要な場合
プロジェクト内でJavaScriptとTypeScriptのコードが共存する場合、Turborepoはトップレベルの依存関係管理を統一化し、開発者が依存関係を管理しやすくします。
Turborepoは、モノレポ用の高性能かつ超高速なビルド ツールです。
Go 言語で書かれており、パフォーマンスを考慮して書かれており、パイプラインを 10 倍高速化できます。
優れたドキュメントもありますので、ぜひ学習してみてください。