Blueprintの基本
JHipsterはプラグイン
をサポートしており、私たちはそれらをBlueprint
とModule
と呼んでいます。
JHipster v7.9.0以前のModule
は、yo
を使用して実行されるYeomanジェネレータ、拡張されたgenerators-jhipster
のgenerator-base
クラス、およびJHipsterのワークフローに統合するための登録されたフックでした。
JHipster v7.9.0では、Module
は Blueprint
であり、スタンドアローンのジェネレータ(Blueprintではない)とカスタムCLIを備えています。
今後は、これらをスタンドアローンのBlueprint(または単にBlueprint)と呼びます。
JHipster Blueprintの基本的なルール
JHipster Blueprintとは以下となります。
- NPMパッケージとYeomanジェネレータです。
- https://yeoman.io/authoring/index.htmlに列挙されているYeomanルールの拡張に従います。
generator-
を前に付けるのではなく、generator-jhipster-
を前に付け、yeoman-generator
キーワードだけを持つのではなく、yeoman-generator
とjhipster-blueprint
の2つのキーワードを持つ必要があります。
使用方法
Blueprintを使用するには、次のコマンドを実行します。
jhipster --blueprints <blueprint name>
または、提供されているカスタムCLIを使用します。
jhipster-my-blueprint
例
JHipsterには多くの公式なBlueprintがあり、いくつかの例があります。
- バックエンド
- JHipster KotlinのBlueprintは、サーバサイドのJavaコードのほとんどを同等のKotlinコードに置き換えます。
- JHipster.NETのBlueprintは、サーバ側全体を.NET実装に置き換えます。
- JHipster NodeJSのBlueprintは、サーバ側全体をNestJS実装に置き換えます。
- バックエンドのカスタマイズ
- JHipster NativeのBlueprintは、JHipsterアプリケーションをSpring Native互換でカスタマイズします。
- フロントエンド
- Svelte HipsterのBlueprintは、クライアント側全体をSvelte実装に置き換えます。
- モバイル
- JHipster IonicのBlueprintは、Ionicアプリケーションを生成します。
Side-by-Side Blueprint
各ジェネレータは、side-by-side(SBS) Blueprintにできます。SBS Blueprintでは、元のジェネレータの動作は変更されませんが、動作と結果をカスタマイズできます。 SBS Blueprintは、複数のJHipsterバージョンをサポートし、新しいJHipsterバージョンに移植することを容易にします。
ジェネレータをside-by-sideにするには、コンストラクタに次のコードを追加します。
this.sbsBlueprint = true;
例:Native Blueprintのサーバジェネレータ。 この例では、ジェネレータはpackage.jsonのカスタマイズ、ファイ ルの削除、pom.xmlのカスタマイズ、Javaファイルのカスタマイズ、Cypressのカスタマイズなどを行っています。
side-by-side Blueprintは、フックを作成し、既存のモジュールの移行を支援するために使用できます。これについては、Moduleの作成で説明されています。
カスタムCLI
スタンドアローンのBlueprintはyo
を使用して実行できますが、yo
はジェネレータの検出に積極的で時間がかかる可能性があり、いくつかの改善がされていません。JHipster CLIは、ヘルプとJHipster統合を提供します。
そのため、jhipster
CLIを使用するか、generator-jhipster
に基づいてカスタムCLIを作成することをお勧めします。
jhipster
コマンドは、グローバルにインストールされたgenerator-jhipster
バージョンを実行します。カスタムCLIは、依存するgenerator-jhipster
を実行し、サポートされているgenerator-jhipster
のバージョンを確実に使用します。
カスタムCLIを使用すると、カスタムジェネレータを実行できます。カスタムCLIについては、Moduleの作成で説明しています。
ローカルBlueprint
JHipsterによってカスタマイズされたコード生成がされると、アプリケーションをより簡単に更新し続けることができます。この目的を念頭に置いて、ローカル・Blueprintが実装されます。
Blueprint全体は、アプリケーションの.blueprint
ディレクトリ内に実装されます。
いくつかの利点があります。
- 再生成およびアップグレード時の矛盾を回避または削減します。
- エンティティファイルを一括編集できます。
- npmリポジトリーに公開する必要はありません。
- jhipsterワークフローを完全に制御します。
- 1つのコマンドで簡単に生成できます。
開発および公開API
公開されているJSDoc APIドキュメントがまだ不足しているため、ソースコードを参照する必要があります。
アプリケーション構成
JHipsterの設定は、Yeoman設定パターンに従い、Blueprint設定の追加サポートを提供します。
config
とjhipsterConfig
プロパティは、共通の設定を保存し、.yo-rc.json
ファイルのgenerator-jhipster
キーに書き込みます。
blueprintStorage
とblueprintConfig
プロパティは、Blueprint固有の設定を保存し、.yo-rc.json
ファイルのgenerator-jhipster-(my-blueprint)
キーに書き込みます。
config
とblueprintStorage
はストレージインスタンスです。
一方、jhipsterConfig
とblueprintConfig
は、利便性のためにconfig
とblueprintStorage
ストレージのためのプロキシオブジェクトです。
定数
generator-constants.js
で定数を使用できます。
const javaDir = `${jhipsterConstants.SERVER_MAIN_SRC_DIR + this.packageFolder}/`;
const resourceDir = jhipsterConstants.SERVER_MAIN_RES_DIR;
const webappDir = jhipsterConstants.CLIENT_MAIN_SRC_DIR;
関数
generator-base.jsのすべての関数を使用できます。
開発用のBlueprintをローカルで実行する
Blueprintを開発する際には、次の手順に注意してください。これらは非常に重要です。
-
Blueprintをグローバルにリンクする
注:作成中の各プロジェクトにBlueprintをリンク(手順3)しない場合の手順です。
cd generator-jhipster-my-blueprint
npm link
- JHipsterの開発バージョンをBlueprintにリンクします。注:
main
ブランチや独自のカスタムフォークなど、リリースされていないJHipsterバージョンを使用する場合にのみ必要です。
cd generator-jhipster
npm link
cd generator-jhipster-my-blueprint
npm link generator-jhipster
または、Gitからgenerator-jhipster
をインストールしてください。
cd generator-jhipster-my-blueprint
npm install jhipster/generator-jhipster
- 生成されるアプリケーション用の新しいフォルダを作成し、JHipsterの依存関係を無視してJHipsterを実行します(そうしないと、
npm install/ci
が呼び出されるたびにリリースバージョンがインストールされます)。
mkdir my-app && cd my-app
jhipster --blueprints my-blueprint --skip-jhipster-dependencies
- blueprint/generator-jhipsterがリリースされたら、再現性のためにJHipster依存関係を再追加します。
jhipster --no-skip-jhipster-dependencies
JHipsterマーケットプレイスへのBlueprintの登録
BlueprintをJHipsterマーケットプレイスで利用できるようにするには、公開されているnpmpackage.json
に2つのキーワードyeoman-generator
とjhipster-blueprint
があることを確認する必要があります。
JHipsterモジュールまたはBlueprintではないエントリをマーケットプレイスで見つけた場合は、modules-config.json file
のblacklistedModules
セクションに追加し、jhipster/jhipster.github.ioのプロジェクトにプルリクエストを送ることで、リスト拒否に協力できます。
BlueprintをNPMに公開すると、そのBlueprintはマーケットプレイスで入手できるようになります。