プロジェクトのベストプラクティスに基づいてレルナ管理パッケージMonorepo

この記事では、最初の生体内のインターネット技術に登場
著者:明るい縦穴を

保守パッケージは、複数の選択肢の質問に遭遇するより多くの学生を持っていたために、パッケージが倉庫にまたは別々に維持複数の倉庫の整備に配置され、この論文はレルナに基づいて複数のパッケージを管理する方法の一例を説明しますそして、効率的かつ最適なワークフローを作成するための他のツールとの統合は、最終的にベストプラクティスを形成します

背景

CLIのセットを維持することで、プロジェクトへの職場での最近の暴露は、NPM祭壇の開発者に送られました。マップを見てください:

プロジェクトのベストプラクティスに基づいてレルナ管理パッケージMonorepo

三つのサブモジュールのファイルフォルダのプロジェクトのリポジトリのルートディレクトリには、3つのパッケージに対応した、おなじみのビルドとリリースのプロセスの後、少し愚かな。ワークフローに示すように:

  1. 使用のWebPACK、バベルとuglifyjs PKG-distのにコンパイル、srcの

  2. 使用のWebPACK、バベルとDISTにコンパイル、srcのuglifyjs PKG-B

  3. SRCのDISTをコンパイルするWebPACKの、バベルを使用し、PKG-メインをuglifyjs

  4. 最終的にPKG-NPM、NPMまでのための最終的なリリースにコンパイルされたファイルにコピーされたファイル、アセンブリPKGメイン、PKG-、PKG-Bを使用して方法。

痛みのポイント

  1. 良いデバッグ。最終的なパッケージはファイルを一緒にコピーされている方法により組み立てられ、そしてコミッショニングプロセスを形成しないように上から下に、圧縮されるので、結果を確認するパッケージをコンパイルするために(実際の作業は、ログを追加することができ、再度組み立て直し)

  2. 依存パッケージは明らかではありません。PKG-A、PKG-B単にないバージョン管理、ソースレベルが、論理比較的独立しているように。package.jsonのPKG-メインは最終的にPKG-NPMにコピーされますが、一部のパッケージではPKG-A、PKG-Bに依存すること、それはPKG-必要があり、PKG-bが依存組み込まpkg-ですメインインチ package.json一緒にカップリングのpkg-メインとPKG-NPMは、いくつかの開発プロジェクトにつながっているだろうNPMのpkg-NPMの依存関係に入る頼るように公開されます。

  3. 依存パッケージの冗長性。、PKG-A、PKG-B見ることができ 、PKG-メインをそれぞれコンパイルするには、それぞれのディレクトリのCDのインストールに、それぞれ、同様のWebPACK、依存バベルに依存しています。

  4. 手動でバージョン番号を変更する必要性を投稿。 最後にのみパッケージが、世界的なだけでなく、ローカルインストールをインストールする必要があり、このパッケージの実際のロジックをリリースしているので、ビジネスは二回インストールする結果として、オープンされていません。一緒に結合された、でもNPMリンクでデバッグが困難になることができ、

  5. 髪のバージョンはCHANGELOG.mdしません。 PKG-A、PKG-Bので、本当にバージョンを管理するので、最後のリリースが来ているので、変更を記録するために完璧なCHANGELOGはありませんされていません。

プロジェクト全体は、最大Monorepoのように管理されていません。Monorepoそれは何ですか?

Multirepo対Monorepo

Monorepoモノリシックリポジトリ、即ち単一倉庫、対応Multirepo(複数のリポジトリ)を表し、ここで、「単一」および「マルチ」が管理する各倉庫内のモジュールの数に関する。

Multirepoはつまり、各パッケージを個別に管理するために倉庫を使用して、より伝統的なアプローチです。たとえば、次のようにロールアップ、...

Monorepは、倉庫管理に配置されているすべての関連パッケージを置くことである各パッケージ独立した出版物例えば:、角度、バベル、冗談リアクト 、Umijs、Vueが...

百聞は一見にしかずです。

プロジェクトのベストプラクティスに基づいてレルナ管理パッケージMonorepo

もちろん、より良い管理の終わりどのように、見る人の目は、賢明な知恵を参照してください。前者は多様化を可能にする中央プロジェクトもたらすとの間の通信コストの差を管理し、低減したいと考えている、(各プロジェクトは、独自のビルド・ツール、依存関係管理戦略、ユニットテスト方法を有することができます)。

分割されたサブストレージが、自然のソリューションを単離した分割サブアイテムパッケージNPMが、倉庫コンテンツ関連が発生すると、デバッグモードに誰も存在しないことは、ソースよりもより効率的です。

!実際のシーン、自然MonoRepoの私たちのプロジェクトやビジネスニーズに合わせてプロジェクトの究極の目標はそれだけでフレームワークを足場いないが、自動化、設計から問題を解決する必要があるので、ビジネスロジックの事業開発に100%フォーカスを可能にすることであるためこれは、ウェアハウス設計の管理を必要とします。

理想的な開発環境は次のように抽象化することができます。

「のみ直接、多重モードのために心配することなく、ビジネス全体にソースコード内のすべてのデバッグコードを再利用することができ、ビジネスのコードを気に。」

フロントエンドの開発環境では、マルチGitのレポは、マルチNPMは、デバッガがNPMリンクを必要とするバージョン番号を心配する必要があり、再利用につながる抵抗、この理想的です。これらはMonoRepo最大の利点です。

上の図で説明したツールを使用すると、今日のヒーローレルナ!レルナは、業界で最も有名Monorepo管理ツール、フル機能のです。

おすすめ

転載: blog.51cto.com/14291117/2429962