問題タブ [monorepo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2468 参照

git - コミット履歴を維持しながら、複数のリポジトリをモノレポに移行する方法は?

いくつかの Git リポジトリを 1 つのモノレポに移行しようとしています。

私は 2 つのプロジェクト リポジトリを持っていproject1ますproject2。私の monorepo では、projects2 つのサブディレクトリproject1project2. 各サブディレクトリには、対応するプロジェクトのファイルが含まれ、Git の履歴が保持されている必要があります。

これは、標準の Git コマンドでも可能ですか?

注: 私は Lerna を見てきました -lerna import私が必要としているものを正確に実行しますが、残念ながらそれは JS プロジェクトでのみ機能し、私のプロジェクトの 1 つは Ruby プロジェクトです。

0 投票する
2 に答える
355 参照

git - 関連するファイルとコミットのみを含む既存のサブディレクトリから新しいリポジトリを作成します

私はそれmonorepoに多くの異なるものを持ってpackagesいます。パッケージを取得して、新しいレポを作成したいと思います。プロジェクト フォルダー内のファイルに関連するコミットを保持したいと考えています。

指定したフォルダーからファイルを使用してブランチを作成できる で使用git filter-branchしてみました。--subdirectory-filter

ただし、logコマンドと--allフラグを使用すると、マスター ブランチで確認されたコミットよりも多くのコミットがあることがわかります。

これらのコミットのそれぞれには、必要なsubdirectory.

これらのファイルを削除するにはどうすればよいですか? 入ったのはこちらbfg

-p( ) フラグを使用する--protect-blobs-fromと、すべての参照を に渡すことができmasterます。

これにより、ブランチにないすべてのファイルがリポジトリ履歴全体から削除されます。master

でも!git log --allコミットにファイルがなく、余分なコミットがすべて表示される場合。

コマンドにディレクトリを提供する方法を探しています (例: )。そのディレクトリ内のファイルに関連するファイルコミット./src/projectのみを持つレポがあります。

ファイルを変更せずにこれらのコミットを削除するにはどうすればよいですか?

コマンドには PR for がありbfgます--prune-emptyfilter-branchこれは役立つかもしれませんが、マージされるまで実行可能なソリューションではありませんbfg

私もcloneこのブランチを試しました。理想的には、 master を取得して、それらのみを使用してまったく新しいリポジトリを作成する方法があるでしょうrefs

アップデート:

@BlythMeister の投稿を拡張しました。この記事filter-branchコマンドには、コンテンツを先頭に移動するという問題が 1 つあります。だから私はそれを実行する必要があります。subdirectory-filtersubdirectory

0 投票する
1 に答える
403 参照

git - モノレポでマイクロサービスを構築するための最良の戦略は何ですか?

私が取り組んでいる複数のマイクロサービスを収容するモノレポ (git) があります。プッシュ時に、サード パーティのビルド サービスがこのプッシュを検出し、ビルドとデプロイの処理を開始します。

これはうまくいきます。しかし今、私はこのプロセスを最適化しようとしており、私が取り組んできた特定のサービスのみを構築したいと考えています。これは、ビルド サービスが変更されたフォルダーを検出し、それらのサービスのみをビルドする必要があることを意味します。

GIT_COMMIT_RANGE 環境変数があるため、このプロセスが Travis でうまく動作するようになりました。したがって、最新のプッシュですべてのコミットを取得し、それらすべてのコミットで変更されたフォルダーを取得できます..これは非常にうまく機能します..しかし、 travisでのみ.

Travis を切り取り、GCP または使用している他のサードパーティ コンテナー ビルダーで直接 Docker イメージをビルドしたいのですが、変更されたフォルダーのみをビルドしたいと考えています。

git commit フックでこれを行うことができるかもしれないと考えています。このフックを使用して、ビルド サーバーがビルドするようにマークするフォルダーのリストの生成を開始したり、ビルド ファイル (cloudbuild.yaml) の生成を開始したりすることもできます。次に、いくつかの git プッシュ フック (ポスト プッシュ フックもあります) で、cloudbuild.yaml ファイルの内容をローカルにリセットしました。

0 投票する
1 に答える
7039 参照

angular - 変数を共有するさまざまなライブラリを使用して、モノレポ全体で SCSS スタイルシートを管理する方法は?

Nrwlを介して設定された角度のある monorepo があり、SASS を使用するAngular Material の themingを使用しています。

SCSS ソース ファイルをプロジェクト レベルでインポートして、テーマ設定のデフォルトの色変数をオーバーライドしたいと考えています。

私が直面している問題は、モノレポ内の他のアプリ/ライブラリ、およびこのモノレポの外部のプロジェクトに SCSS ソース ファイルをインポートしたいということです。

インポートは次のように記述できます。

...これは、モノレポ内のすべてに対して機能します。

または、次のように書くこともできます。

...私のモノレポ、AFAIK内では動作しません。

両方のコンテキストで機能させるにはどうすればよいですか?

下図のような配置になっています。

ここに画像の説明を入力

0 投票する
0 に答える
2004 参照

npm - 既存の Lerna mono-repo 用にパッケージごとの package-lock.json を生成する方法

次のような構造を持つ既存のLerna モノレポがあります。

現在、プロジェクトに Yarn を使用していますが、実際には最上位yarn.lockファイルのみがあり、ワークスペースを使用したことがないため、パッケージごとyarn.lockはありません。

npm に切り替えようとしておりpackage-lock.json、トップレベルだけでなく、モノレポ内のすべてのパッケージのファイルを生成したいと考えています。どうすればこれを行うことができますか?実行npm run lerna bootstrap --hoistすると、最上位のロック ファイルが作成されますが、"dev": trueタグは含まれず、ローカル パッケージも含まれません。私ができる最善のことはnpm run lerna add somePackage --scope=package1、. さらに、生成されたファイルには開発依存関係がありません。somePackagepackagepackage-lock.jsonpackage1package-lock.json

さらに、他のローカル パッケージが依存している mono-repo にあるローカル パッケージの多くを知らないため、各パッケージに入って実行するnpm installことはできません。npm奇妙なことに、package-lock.jsonを介して npm から生成されたファイルであってもlerna add、これらのファイルにはローカル パッケージへの参照が含まれておらず、外部パッケージのみが含まれています。

package-lock.jsonでは、devDependencies も含む mono-repo 内のすべてのパッケージのファイルを生成するにはどうすればよいですか?