[JavaScript] モノレポ(Monorepo)のためのツール

2024-01-23 hit count image

JavaScriptで開発するプロジェクトでモノレポ(Monorepo)を使用するために必要なツールを紹介します。

概要

今回のブログポストでは、JavaScript で開発するプロジェクトでモノレポ(Monorepo)を使用するために必要なツールを紹介します。

ブログシリーズ

このブログはシリーズで制作されました。次のリンクを通じて他のブログポストも確認してください。

モノレポを始める方法

モノレポを始める方法は大きく 2 つあります。

  • パッケージマネージャーを利用する方法
  • モノレポ用ツールを利用する方法

今回のブログポストでは、JavaScript プロジェクトでモノレポをサポートするパッケージマネージャーとモノレポツールについて紹介します。

パッケージマネージャー

JavaScript プロジェクトでモノレポを構成するためには、モノレポをサポートするパッケージマネージャーを使用することができます。モノレポをサポートするパッケージマネージャーは、pnpmyarnnpmがあります。

モノレポをサポートするパッケージマネージャーであるpnpmyarnnpmは次のような特性を持っています。

機能pnpmyarnnpm
workspace 提供
孤立した node_modules✅(default)
ホイスティングされた node_modules✅(default)
ピア自動インストール
Plug’n’Play✅(default)
Zero-Installs
依存パッチ
NodeJS バージョン管理
Lockfile✅(pnpm-lock.yaml)✅(yarn.lock)✅(package-lock.json)
上書きサポート✅(resolution 使用)
Content-addressable リポジトリ
動的パッケージ実行✅(pnpm dlx)✅(yarn dlx)✅(npx)
Listing licenses✅(pnpm licenses list)✅(Via a plugin)

モノレポ用ツール

パッケージマネージャーが提供するWorkspace機能だけでも十分にモノレポを構成することができますが、モノレポ用ツールを使用するとより簡単にモノレポを構成することができます。また、モノレポ用ツールが提供するCache機能を使用するとBuildCIなどをより高速に実行することができます。

JavaScript プロジェクトのためのモノレポ用ツールにはLernaNxTurborepoがあります。

Lerna

Lernaはオープンソースで開発、管理されています。オープンソースコミュニティだけでは管理が難しく、Nxに引き継がれました。

現在もLernaを使用することはできますが、Nxに引き継がれたため、Nxが自分たちのツールほどLernaをサポートするかは確実ではないため、Lernaを使用するのであればNxを使用するか、もう少し動向を見守ることをお勧めします。

Nx

NxNarwhal Technologies Inc.という会社で開発、提供しています。この会社はAngularフレームワークに関連するツールやサービスを提供する会社です。Angularフレームワークに関連するツールを開発する会社が作ったNxであるため、NxAngularアプリケーションをサポートするモノレポ管理ツールとして始まりました。現在はReactなど他のフレームワークもサポートしています。

もしAngularフレームワークでプロジェクトを開発する予定であれば、Nxは優れた選択肢になると思います。もちろん、他のフレームワークでもNxは良い選択肢になるかもしれませんが、Angularフレームワークを中心に開発されたNxAngular中心のツールを開発する会社が作ったNxAngularフレームワークでより良いパフォーマンスを発揮すると思います。

Nxがサポートするフレームワークは次のリンクから確認できます。

Turborepo

TurborepoJared Palmerが開発しましたが、2021 年にNextJSを作って運営しているVercelが買収し、開発、管理しています。

もし、NextJSReactでプロジェクトを開発する予定であれば、Turborepoは優れた選択肢になると思います。もちろん、他のフレームワークでもTurborepoは良い選択肢になるかもしれませんが、NextJSを作って運営しているVercelが買収したTurborepoNextJSでより良いパフォーマンスを発揮すると思います。

Turborepoがサポートするフレームワークは次のリンクから確認できます。

完了

今回のブログポストでは、JavaScript で開発するプロジェクトでモノレポ(Monorepo)を使用するために必要なツールを紹介しました。パッケージマネージャーが提供する機能だけで十分にモノレポを構成することができますが、モノレポ用ツールを使用するとより簡単にモノレポを構成することができます。

モノレポでプロジェクトを構成する予定であれば、パッケージマネージャーの機能だけでなく、モノレポ用ツールの導入も検討してみてください。

私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!

アプリ広報

今見てるブログを作成たDekuが開発したアプリを使ってみてください。
Dekuが開発したアプリはFlutterで開発されています。

興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。

Posts