複数の相互依存パッケージを含む大規模な JavaScript または TypeScript プロジェクトの管理は、開発者や開発チームにとって大きな課題となる可能性があります。多くの場合、開発者はパッケージごとに複数のリポジトリに依存するため、コードのメンテナンス、依存関係の管理、コラボレーションの点でオーバーヘッドが発生します。
Lerna は、monorepos を管理するために開発された強力なツールで、このプロセスを合理化します。 Monorepos を使用すると、チームが単一のリポジトリで複数のパッケージをホストできるようになり、依存関係の管理が簡素化され、チーム間のコラボレーションがよりスムーズになります。
この電子書籍は、Lerna を使用してモノリポジトリを効率的に管理するための完全なガイドを提供することを目的としています。コンポーネント ライブラリを扱う場合でも、複数の相互接続されたパッケージを含む大規模プロジェクトを扱う場合でも、Lerna を使用すると生産性を最大化するのに役立つ貴重な洞察が得られます。
Lerna は、monorepo 内の複数のパッケージの管理を容易にするオープンソース ツールです。自動依存関係管理、バージョン管理、公開などの強力な機能を提供し、大規模な JavaScript および TypeScript プロジェクトの保守を容易にします。
Monorepos にはいくつかの利点があるため、多くの大規模プロジェクトにとってアーキテクチャ上の選択肢となります。
これらの利点にもかかわらず、モノリポジトリの管理には、特に依存関係とバージョン管理の管理において特有の課題が生じる可能性があります。 Lerna はこれらの課題に正面から取り組むように設計されており、モノリポジトリに最適化されたワークフローを提供します。
開始する前に、Node.js と npm (または Yarn) がインストールされていることを確認してください。 Lerna は npm と Yarn の両方と互換性があります。
npm:
を介して Lerna をグローバルにインストールできます
npm install --global lerna
あるいは、Lerna を開発依存関係としてプロジェクトに追加することもできます:
npm install --save-dev lerna
インストールしたら、プロジェクト ディレクトリに移動して次のコマンドを実行して、monorepo を初期化します。
lerna init
これにより、lerna.json などの重要な構成ファイルが作成され、個々のパッケージが存在するパッケージ フォルダーがセットアップされます。
Lerna プロジェクトでは、各パッケージはパッケージの下の独自のサブフォルダーに存在します。各パッケージには、依存関係を管理するための独自の package.json ファイルが必要です。
サンプル構造:
/my-project /packages /package-a /package-b lerna.json package.json
複数のパッケージにわたる依存関係を管理することは、Lerna の中核的な強みの 1 つです。
Lerna を使用すると、特定のパッケージに依存関係を追加できます。たとえば、package-a のみに lodash が必要な場合は、次を実行できます:
lerna add lodash --scope=package-a
複数のパッケージが依存関係を共有する場合、それらの依存関係をモノリポジトリのルートにホイストできます。これにより冗長性が減り、インストールが高速化されます。ホイスティングを有効にするには、これを lerna.json:
に追加します。
{ "hoist": true }
依存関係をインストールし、相互に依存するパッケージをリンクするには、次を実行します:
lerna bootstrap
これにより、必要な外部依存関係がすべてインストールされ、パッケージが相互に適切に参照できるようになります。
Lerna を使用すると、モノリポジトリ内のすべてのパッケージにわたってスクリプト (ビルド、テスト、lint など) を簡単に実行できます。
すべてのパッケージにわたってビルドなどのスクリプトを実行するには、次を使用します:
lerna run build
特定のパッケージでのみスクリプトを実行したい場合は、--scope フラグを使用します:
lerna run test --scope=package-a
この柔軟性により、よりターゲットを絞った実行が可能になり、開発中の時間を節約できます。
Lerna は堅牢なバージョン管理および公開機能を提供し、パッケージのバージョン管理とリリースを簡単に行うことができます。
固定モードでは、すべてのパッケージが同じバージョン番号を共有します。いずれかのパッケージが更新されると、すべてのパッケージのバージョン番号が増加します。
独立モードでは、各パッケージには独自のバージョン番号があります。パッケージが変更されると、そのパッケージのバージョンのみが更新されます。
独立モードに切り替えるには、lerna.json:
を変更します。
{ "version": "independent" }
パッケージを npm に公開するには、次を実行します:
lerna publish
Lerna は設定に基づいてバージョン管理と公開を処理します。
Lerna と Yarn Workspaces を組み合わせると、より多くの共有依存関係をホイストすることで、依存関係管理をさらに最適化できます。
Yarn ワークスペースを有効にするには、lerna.json ファイルを変更します:
{ "npmClient": "yarn", "useWorkspaces": true }
次に、package.json を更新します:
{ "workspaces": ["packages/*"] }
この統合によりパフォーマンスが向上し、大規模プロジェクトの管理が簡素化されます。
Lerna を使用すると、特定のパッケージに対してコマンドを実行したり、特定のパッケージを除外したりするフィルタリングが可能になります。
特定のパッケージで実行する例:
lerna run build --scope=package-a --scope=package-b
パッケージを除外する例:
lerna run build --ignore=package-c
特殊なワークフロー用に package.json 内でカスタム Lerna コマンドを定義できます。これらのコマンドはパッケージ全体で実行できます。
Lerna は、モノリポジトリを管理するための非常に貴重なツールで、依存関係の管理からバージョン管理、公開まで、複雑なワークフローを簡素化する機能を提供します。 Lerna を採用することで、チームは複雑さを軽減し、プロセスを合理化し、コラボレーションを向上させることができ、大規模なプロジェクトの維持が容易になります。
単純なコンポーネント ライブラリで作業している場合でも、マルチパッケージ エコシステムで作業している場合でも、Lerna はプロジェクトを効果的に管理するために必要なツールを提供します。 Lerna の高度な機能を試し続けて、その可能性を最大限に引き出してください。
ハッピーコーディング:)
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3