「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Lerna をマスターする: JavaScript Monorepos 管理ガイド

Lerna をマスターする: JavaScript Monorepos 管理ガイド

2024 年 11 月 1 日に公開
ブラウズ:371

Mastering Lerna: A Guide to Managing JavaScript Monorepos

目次

  1. 導入
  2. 第 1 章: レルナとは何ですか?
    • Monorepos を使用する理由
  3. 第 2 章: Lerna のインストールとセットアップ
    • 前提条件
    • ステップバイステップのインストール ガイド
    • 最初の Lerna プロジェクトをセットアップする
  4. 第 3 章: Lerna での依存関係管理
    • 独立した依存関係
    • 共有依存関係のホイスト
    • ブートストラップ パッケージ
  5. 第 4 章: パッケージ間でのスクリプトの実行
    • スクリプトをグローバルに実行
    • 特定のパッケージをターゲットにする
  6. 第 5 章: Lerna を使用したバージョニングと公開
    • 固定モードと独立モード
    • npm へのパッケージの公開
  7. 第 6 章: Yarn ワークスペースでの Lerna の使用
    • Lerna で Yarn ワークスペースを有効にする
    • Lerna Yarn ワークスペースによるワークフローの最適化
  8. 第 7 章: 高度な Lerna の使用法
    • フィルタリングコマンド
    • カスタム コマンドの作成
  9. 第 8 章: Lerna Monorepos のベスト プラクティス
    • 論理パッケージ構成
    • テストとビルドの自動化
    • CI/CD 統合
  10. 結論
  11. 付録: 一般的な Lerna コマンド

導入

複数の相互依存パッケージを含む大規模な JavaScript または TypeScript プロジェクトの管理は、開発者や開発チームにとって大きな課題となる可能性があります。多くの場合、開発者はパッケージごとに複数のリポジトリに依存するため、コードのメンテナンス、依存関係の管理、コラボレーションの点でオーバーヘッドが発生します。

Lerna は、monorepos を管理するために開発された強力なツールで、このプロセスを合理化します。 Monorepos を使用すると、チームが単一のリポジトリで複数のパッケージをホストできるようになり、依存関係の管理が簡素化され、チーム間のコラボレーションがよりスムーズになります。

この電子書籍は、Lerna を使用してモノリポジトリを効率的に管理するための完全なガイドを提供することを目的としています。コンポーネント ライブラリを扱う場合でも、複数の相互接続されたパッケージを含む大規模プロジェクトを扱う場合でも、Lerna を使用すると生産性を最大化するのに役立つ貴重な洞察が得られます。


第 1 章: レルナとは何ですか?

Lerna は、monorepo 内の複数のパッケージの管理を容易にするオープンソース ツールです。自動依存関係管理、バージョン管理、公開などの強力な機能を提供し、大規模な JavaScript および TypeScript プロジェクトの保守を容易にします。

Monorepos を使用する理由

Monorepos にはいくつかの利点があるため、多くの大規模プロジェクトにとってアーキテクチャ上の選択肢となります。

  • 共有コードベース: モノリポジトリを使用すると、コードの再利用が簡単になります。これにより重複が減り、プロジェクト間の一貫性が確保されます。
  • コラボレーションの簡素化: すべてのパッケージが 1 か所にあると、開発者はより効果的に共同作業できます。
  • 統合ビルド プロセス: 複数のパッケージにわたるビルド、テスト、デプロイメントの標準化が容易になります。

これらの利点にもかかわらず、モノリポジトリの管理には、特に依存関係とバージョン管理の管理において特有の課題が生じる可能性があります。 Lerna はこれらの課題に正面から取り組むように設計されており、モノリポジトリに最適化されたワークフローを提供します。


第 2 章: Lerna のインストールとセットアップ

前提条件

開始する前に、Node.jsnpm (または Yarn) がインストールされていることを確認してください。 Lerna は npm と Yarn の両方と互換性があります。

ステップ 1: Lerna をインストールする

npm:
を介して Lerna をグローバルにインストールできます

npm install --global lerna

あるいは、Lerna を開発依存関係としてプロジェクトに追加することもできます:

npm install --save-dev lerna

ステップ 2: Lerna Monorepo の初期化

インストールしたら、プロジェクト ディレクトリに移動して次のコマンドを実行して、monorepo を初期化します。

lerna init

これにより、lerna.json などの重要な構成ファイルが作成され、個々のパッケージが存在するパッケージ フォルダーがセットアップされます。

ステップ 3: パッケージを追加する

Lerna プロジェクトでは、各パッケージはパッケージの下の独自のサブフォルダーに存在します。各パッケージには、依存関係を管理するための独自の package.json ファイルが必要です。

サンプル構造:

/my-project
  /packages
    /package-a
    /package-b
  lerna.json
  package.json

第 3 章: Lerna での依存関係管理

複数のパッケージにわたる依存関係を管理することは、Lerna の中核的な強みの 1 つです。

独立した依存関係

Lerna を使用すると、特定のパッケージに依存関係を追加できます。たとえば、package-a のみに lodash が必要な場合は、次を実行できます:

lerna add lodash --scope=package-a

共有依存関係のホイスト

複数のパッケージが依存関係を共有する場合、それらの依存関係をモノリポジトリのルートにホイストできます。これにより冗長性が減り、インストールが高速化されます。ホイスティングを有効にするには、これを lerna.json:
に追加します。

{
  "hoist": true
}

ブートストラップ

依存関係をインストールし、相互に依存するパッケージをリンクするには、次を実行します:

lerna bootstrap

これにより、必要な外部依存関係がすべてインストールされ、パッケージが相互に適切に参照できるようになります。


第 4 章: パッケージ間でのスクリプトの実行

Lerna を使用すると、モノリポジトリ内のすべてのパッケージにわたってスクリプト (ビルド、テスト、lint など) を簡単に実行できます。

スクリプトをグローバルに実行

すべてのパッケージにわたってビルドなどのスクリプトを実行するには、次を使用します:

lerna run build

特定のパッケージをターゲットにする

特定のパッケージでのみスクリプトを実行したい場合は、--scope フラグを使用します:

lerna run test --scope=package-a

この柔軟性により、よりターゲットを絞った実行が可能になり、開発中の時間を節約できます。


第 5 章: Lerna を使用したバージョニングと公開

Lerna は堅牢なバージョン管理および公開機能を提供し、パッケージのバージョン管理とリリースを簡単に行うことができます。

1.固定モード

固定モードでは、すべてのパッケージが同じバージョン番号を共有します。いずれかのパッケージが更新されると、すべてのパッケージのバージョン番号が増加します。

2.独立モード

独立モードでは、各パッケージには独自のバージョン番号があります。パッケージが変更されると、そのパッケージのバージョンのみが更新されます。

独立モードに切り替えるには、lerna.json:
を変更します。

{
  "version": "independent"
}

パッケージの公開

パッケージを npm に公開するには、次を実行します:

lerna publish

Lerna は設定に基づいてバージョン管理と公開を処理します。


第 6 章: Yarn ワークスペースでの Lerna の使用

Lerna と Yarn Workspaces を組み合わせると、より多くの共有依存関係をホイストすることで、依存関係管理をさらに最適化できます。

Yarn ワークスペースを有効にするには、lerna.json ファイルを変更します:

{
  "npmClient": "yarn",
  "useWorkspaces": true
}

次に、package.json を更新します:

{
  "workspaces": ["packages/*"]
}

この統合によりパフォーマンスが向上し、大規模プロジェクトの管理が簡素化されます。


第 7 章: 高度な Lerna の使用法

フィルタリングコマンド

Lerna を使用すると、特定のパッケージに対してコマンドを実行したり、特定のパッケージを除外したりするフィルタリングが可能になります。

特定のパッケージで実行する例:

lerna run build --scope=package-a --scope=package-b

パッケージを除外する例:

lerna run build --ignore=package-c

カスタムコマンド

特殊なワークフロー用に package.json 内でカスタム Lerna コマンドを定義できます。これらのコマンドはパッケージ全体で実行できます。


第 8 章: Lerna Monorepos のベスト プラクティス

  1. パッケージを論理的に整理する: コードを再利用しやすくするために、関連するパッケージをグループ化します。
  2. ホイストを使用する: 共有依存関係をホイスティングすると、スペースが節約され、インストール時間が短縮されます。
  3. テストの自動化: lerna run を使用して、モノリポジトリ全体のテストを自動化します。
  4. CI/CD パイプライン: 継続的な統合とデプロイのワークフローを実装して、変更のテストとデプロイを自動的に行います。
  5. Yarn ワークスペース: Lerna で Yarn ワークスペースを活用して、依存関係の管理を改善します。

結論

Lerna は、モノリポジトリを管理するための非常に貴重なツールで、依存関係の管理からバージョン管理、公開まで、複雑なワークフローを簡素化する機能を提供します。 Lerna を採用することで、チームは複雑さを軽減し、プロセスを合理化し、コラボレーションを向上させることができ、大規模なプロジェクトの維持が容易になります。

単純なコンポーネント ライブラリで作業している場合でも、マルチパッケージ エコシステムで作業している場合でも、Lerna はプロジェクトを効果的に管理するために必要なツールを提供します。 Lerna の高度な機能を試し続けて、その可能性を最大限に引き出してください。


付録: 一般的な Lerna コマンド

  • lerna init: Lerna モノリポジトリを初期化します。
  • lerna bootstrap: 依存関係をインストールし、パッケージをリンクします。
  • lerna add [package] --scope=[package-name]: 特定のパッケージに依存関係を追加します。
  • lerna run [script]: すべてのパッケージにわたってスクリプトを実行します。
  • lerna public: パッケージを npm に発行します。

ハッピーコーディング:)

リリースステートメント この記事は次の場所に転載されています: https://dev.to/samuel_kinuthia/mastering-lerna-a-guide-to-managing-javascript-monorepos-4f2b?1 侵害がある場合は、削除するために[email protected]に連絡してください。それ
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3