6

モノリシック リポジトリを使用するプロジェクトがあります。各パッケージには、そのパッケージの依存関係を管理するための独自の package.json ファイルがあります。lernamonorepo アプリのすべての「サブパッケージ」にパッケージをインストールするために使用しています。

現在のプロジェクト構造は次のようになります

計画/
| | パッケージ.json
| | node_modules/
|- パッケージ/
|-- package1/
|--- package.json
|--- node_modules/
|-- package2/
|--- package.json
|--- node_modules/

ルート node_modules フォルダーで一般的な依存関係を一般化する方法を検討しているため、各パッケージは実行時にノード パッケージの独自のコピーをプルせずlerna exec -- npm install、代わりにモノリシック リポジトリのルートにあるものを使用して、インストールを回避します。複数のレポで同じパッケージを使用するため、プロジェクトのサイズが縮小されます。

プロジェクト間にいくつかのシンボリックリンクを作成することを含むいくつかの解決策を見てきましたが、シンボリックリンクのサポートは非​​常にOSの意見であるため、それは正確な科学ではないようです。また、これはサポートされている方法ではないようです。

現在、私たちはまだ始まったばかりで、lerna exec -- npm installプロジェクトを実行した後、ディスク上にすでに約 350MB あり、npm からすべてをプルするのに最初は約 5 分かかります。プロジェクトは時間の経過とともに成長するため、この時間も時間の経過とともに延長されます...

したがって、すべてを再開するために、リポジトリのルートにある node_modules フォルダーで共通の依存関係を抽出し、サブパッケージが毎回独自のコピーを取得するのではなく、このフォルダーから共通の依存関係をプルするようにする方法を探しています。

4

3 に答える 3

5

2017 年 8 月の時点で、Yarn にはまさにこれを行うワークスペースと呼ばれる機能が含まれています。しかし、さらに優れているのは、Lerna を介して認識し、統合できること--use-workspacesです。通常どおり実行lerna bootstrapすると、これらすべてが自動的に処理されます。

于 2017-10-19T22:54:53.970 に答える
0

全く使わないことをお勧めlernaします。それは間違った考えだと思います。

代わりに、個別のモジュールを独自のファイルに入れてimport mod1 from './mod' などでロードするか、先に進んで個別のリポジトリを作成してください。ただし、小さなモジュールごとに個別のリポジトリを作成しないでください。あなたまたは他の誰かが確実に再利用できるもの (つまり、他の人を助けるために公開したいもの) だけです。

npm link、スコープ付きパッケージを利用して、github リポジトリを package.json に単純にリストdependencies:{"mod1":"myorg/mod1"}して、別のリポジトリに簡単に配置できるようにすることができます (必要な場合)。

特にnpm link物事を単純化する必要があります。 http://justjs.com/posts/npm-link-developing-your-own-npm-modules-without-tears

于 2016-09-28T02:43:42.533 に答える