複数の相互依存パッケージを含む大規模な JavaScript または TypeScript プロジェクトの管理は、開発者や開発チームにとって大きな課題となる可能性があります。多くの場合、開発者はパッケージごとに複数のリポジトリに依存するため、コードのメンテナンス、依存関係の管理、コラボレーションの点でオーバーヘッドが発生します。
Lerna は、モノリポス を管理するために開発された強力なツールで、このプロセスを合理化します。 Monorepos を使用すると、チームが単一のリポジトリで複数のパッケージをホストできるようになり、依存関係の管理が簡素化され、チーム間のコラボレーションがよりスムーズになります。
この電子ブックは、Lerna を使用してモノリポジトリを効率的に管理するための完全なガイドを提供することを目的としています。コンポーネント ライブラリを扱う場合でも、複数の相互接続されたパッケージを含む大規模プロジェクトを扱う場合でも、Lerna を使用すると生産性を最大化するのに役立つ貴重な洞察が得られます。
Lerna は、モノリポ 内の複数のパッケージの管理を容易にするオープンソース ツールです。自動依存関係管理、バージョン管理、公開などの強力な機能を提供し、大規模な 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
Managing dependencies across multiple packages is one of Lerna’s core strengths.
Lerna allows you to add dependencies to a specific package. For example, if only package-a needs lodash, you can run:
lerna add lodash --scope=package-a
When multiple packages share dependencies, you can hoist those dependencies to the root of your monorepo. This reduces redundancy and speeds up installations. To enable hoisting, add this to lerna.json:
{ "hoist": true }
To install dependencies and link packages that depend on one another, run:
lerna bootstrap
This ensures that all necessary external dependencies are installed and that packages can reference each other properly.
Lerna makes it easy to execute scripts (e.g., build, test, lint) across all packages in your monorepo.
To run a script like build across all packages, use:
lerna run build
If you only want to run a script in certain packages, use the --scope flag:
lerna run test --scope=package-a
This flexibility allows for more targeted execution, saving time during development.
Lerna provides robust versioning and publishing features, allowing you to easily version and release packages.
In fixed mode, all packages share the same version number. When any package is updated, the version number is incremented for all.
In independent mode, each package has its own version number. When a package is changed, only that package’s version is updated.
To switch to independent mode, modify lerna.json:
{ "version": "independent" }
To publish your packages to npm, run:
lerna publish
Lerna will handle versioning and publishing based on your configuration.
Combining Lerna with Yarn Workspaces can further optimize dependency management by hoisting even more shared dependencies.
To enable Yarn Workspaces, modify your lerna.json file:
{ "npmClient": "yarn", "useWorkspaces": true }
Then update your package.json:
{ "workspaces": ["packages/*"] }
This integration boosts performance and simplifies managing large-scale projects.
Lerna allows filtering to run commands for specific packages or to exclude certain packages.
Example for running on specific packages:
lerna run build --scope=package-a --scope=package-b
Example for excluding packages:
lerna run build --ignore=package-c
You can define custom Lerna commands within package.json for specialized workflows. These commands can then be run across your packages.
Lerna is an invaluable tool for managing monorepos, offering features that simplify complex workflows, from dependency management to versioning and publishing. By adopting Lerna, teams can reduce complexity, streamline processes, and improve collaboration, making it easier to maintain large-scale projects.
Whether you’re working on a simple component library or a multi-package ecosystem, Lerna provides the tools needed to manage your project effectively. Keep experimenting with Lerna’s advanced features to unlock its full potential.
コーディングを楽しんでください:)
以上がLerna をマスターする: JavaScript Monorepos 管理ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。