Monorepoパッケージ管理ワークフロー
一つのプロジェクトやGitリポジトリには複数の異なるサブプロジェクトやサブモジュールを含むことができ、それらはすべて個別にパッケージ化され公開されます。
親プロジェクトへのパッケージの公開
1つのプロジェクトに公開できるパッケージの数や名前に制限はありません。パッケージごとに異なる設定ファイルを用意することで実現できます。各パッケージマネージャには固有のファイルや、パッケージを公開するための手順があるので、選択したパッケージマネージャのドキュメントを参照してください。
この例ではnpm を使っています。この例では、MyProject が親プロジェクトです。components ディレクトリにサブプロジェクトFoo が含まれています:
MyProject/
|- src/
| |- components/
| |- Foo/
|- package.json
目標はMyProject とFoo のパッケージを公開することです。GitLab NPM レジストリドキュメントの説明に従って、package.json ファイルにpublishConfig セクションを追加し、次のいずれかの方法でMyProject を公開します:
-
npm config setのような CLI コマンドを使って、ローカルの NPM 設定を変更します。 - これらの設定を指定した
.npmrcファイルをプロジェクトのルートに保存します。
指示に従えば、ルート・ディレクトリからnpm publish を実行してMyProject を発行できます。
発行Foo 方法はほとんど同じ Fooです。ディレクトリにFoo いる間は同じ手順に従って Fooください。Foo には独自のpackage.json ファイルが必要で、npm init を使って手動で追加できます。Foo にも独自の設定設定が必要です。同じ場所にパブリッシュしているので、npm config set を使って親プロジェクトのレジストリを設定した場合は、追加の設定は必要ありません。.npmrc ファイルを使用した場合は .npmrc、Foo ディレクトリに.npmrc 追加のファイルが必要 .npmrcです。必ず.gitignore ファイルに.npmrc ファイルを追加するか、アクセストークンの代わりに環境変数を使用して、トークンが公開されないようにしてください。この.npmrc ファイルは、MyProjectで使用したものと同一でかまいません。 これで、Foo ディレクトリから Foo npm publish を実行できるようにFoo なり、 Foo MyProjectとは別にFoo パブリッシュできる Fooようになります。
Conan パッケージも同様の手順で作成できます。ただし、.npmrc とpackage.json の代わりに、プロジェクト内の複数の場所にconanfile.py を用意します。
他のプロジェクトへの公開
パッケージは GitLab 上のプロジェクトに関連付けられていますが、パッケージはそのプロジェクトのコードに関連付けられている必要はありません。NPM や Maven を設定するとき、Project ID を使ってパッケージがアップロードされるレジストリ URL を設定するだけです。あなたがアクセスできるプロジェクトにこれを設定し、パッケージの種類に応じて他の設定を同様に更新すると、パッケージはそのプロジェクトに公開されます。つまり、コードが同じ場所に存在しなくても、複数のパッケージをひとつのプロジェクトに公開できます。詳しくはプロジェクトレジストリワークフローを参照ください。