問題タブ [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.
git - コミット履歴を維持しながら、複数のリポジトリをモノレポに移行する方法は?
いくつかの Git リポジトリを 1 つのモノレポに移行しようとしています。
私は 2 つのプロジェクト リポジトリを持っていproject1
ますproject2
。私の monorepo では、projects
2 つのサブディレクトリproject1
とproject2
. 各サブディレクトリには、対応するプロジェクトのファイルが含まれ、Git の履歴が保持されている必要があります。
これは、標準の Git コマンドでも可能ですか?
注: 私は Lerna を見てきました -lerna import
私が必要としているものを正確に実行しますが、残念ながらそれは JS プロジェクトでのみ機能し、私のプロジェクトの 1 つは Ruby プロジェクトです。
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-empty
。filter-branch
これは役立つかもしれませんが、マージされるまで実行可能なソリューションではありませんbfg
。
私もclone
このブランチを試しました。理想的には、 master を取得して、それらのみを使用してまったく新しいリポジトリを作成する方法があるでしょうrefs
。
アップデート:
@BlythMeister の投稿を拡張しました。この記事のfilter-branch
コマンドには、コンテンツを先頭に移動するという問題が 1 つあります。だから私はそれを実行する必要があります。subdirectory-filter
subdirectory
git - モノレポでマイクロサービスを構築するための最良の戦略は何ですか?
私が取り組んでいる複数のマイクロサービスを収容するモノレポ (git) があります。プッシュ時に、サード パーティのビルド サービスがこのプッシュを検出し、ビルドとデプロイの処理を開始します。
これはうまくいきます。しかし今、私はこのプロセスを最適化しようとしており、私が取り組んできた特定のサービスのみを構築したいと考えています。これは、ビルド サービスが変更されたフォルダーを検出し、それらのサービスのみをビルドする必要があることを意味します。
GIT_COMMIT_RANGE 環境変数があるため、このプロセスが Travis でうまく動作するようになりました。したがって、最新のプッシュですべてのコミットを取得し、それらすべてのコミットで変更されたフォルダーを取得できます..これは非常にうまく機能します..しかし、 travisでのみ.
Travis を切り取り、GCP または使用している他のサードパーティ コンテナー ビルダーで直接 Docker イメージをビルドしたいのですが、変更されたフォルダーのみをビルドしたいと考えています。
git commit フックでこれを行うことができるかもしれないと考えています。このフックを使用して、ビルド サーバーがビルドするようにマークするフォルダーのリストの生成を開始したり、ビルド ファイル (cloudbuild.yaml) の生成を開始したりすることもできます。次に、いくつかの git プッシュ フック (ポスト プッシュ フックもあります) で、cloudbuild.yaml ファイルの内容をローカルにリセットしました。
angular - 変数を共有するさまざまなライブラリを使用して、モノレポ全体で SCSS スタイルシートを管理する方法は?
Nrwlを介して設定された角度のある monorepo があり、SASS を使用するAngular Material の themingを使用しています。
SCSS ソース ファイルをプロジェクト レベルでインポートして、テーマ設定のデフォルトの色変数をオーバーライドしたいと考えています。
私が直面している問題は、モノレポ内の他のアプリ/ライブラリ、およびこのモノレポの外部のプロジェクトに SCSS ソース ファイルをインポートしたいということです。
インポートは次のように記述できます。
...これは、モノレポ内のすべてに対して機能します。
または、次のように書くこともできます。
...私のモノレポ、AFAIK内では動作しません。
両方のコンテキストで機能させるにはどうすればよいですか?
下図のような配置になっています。
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
、. さらに、生成されたファイルには開発依存関係がありません。somePackage
package
package-lock.json
package1
package-lock.json
さらに、他のローカル パッケージが依存している mono-repo にあるローカル パッケージの多くを知らないため、各パッケージに入って実行するnpm install
ことはできません。npm
奇妙なことに、package-lock.json
を介して npm から生成されたファイルであってもlerna add
、これらのファイルにはローカル パッケージへの参照が含まれておらず、外部パッケージのみが含まれています。
package-lock.json
では、devDependencies も含む mono-repo 内のすべてのパッケージのファイルを生成するにはどうすればよいですか?