Skip to main content

Blueprintの基本

JHipsterはプラグインをサポートしており、私たちはそれらをBlueprintModuleと呼んでいます。

JHipster v7.9.0以前のModuleは、yoを使用して実行されるYeomanジェネレータ、拡張されたgenerators-jhipstergenerator-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-generatorjhipster-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統合を提供します。 そのため、jhipsterCLIを使用するか、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設定の追加サポートを提供します。

configjhipsterConfigプロパティは、共通の設定を保存し、.yo-rc.jsonファイルのgenerator-jhipsterキーに書き込みます。 blueprintStorageblueprintConfigプロパティは、Blueprint固有の設定を保存し、.yo-rc.jsonファイルのgenerator-jhipster-(my-blueprint)キーに書き込みます。

configblueprintStorageストレージインスタンスです。 一方、jhipsterConfigblueprintConfigは、利便性のためにconfigblueprintStorageストレージのためのプロキシオブジェクトです。

定数

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を開発する際には、次の手順に注意してください。これらは非常に重要です。

  1. Blueprintをグローバルにリンクする

    注:作成中の各プロジェクトにBlueprintをリンク(手順3)しない場合の手順です。

cd generator-jhipster-my-blueprint
npm link
  1. 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
  1. 生成されるアプリケーション用の新しいフォルダを作成し、JHipsterの依存関係を無視してJHipsterを実行します(そうしないと、npm install/ciが呼び出されるたびにリリースバージョンがインストールされます)。
mkdir my-app && cd my-app

jhipster --blueprints my-blueprint --skip-jhipster-dependencies
  1. blueprint/generator-jhipsterがリリースされたら、再現性のためにJHipster依存関係を再追加します。
jhipster --no-skip-jhipster-dependencies

JHipsterマーケットプレイスへのBlueprintの登録

BlueprintをJHipsterマーケットプレイスで利用できるようにするには、公開されているnpmpackage.jsonに2つのキーワードyeoman-generatorjhipster-blueprintがあることを確認する必要があります。 JHipsterモジュールまたはBlueprintではないエントリをマーケットプレイスで見つけた場合は、modules-config.json fileblacklistedModulesセクションに追加し、jhipster/jhipster.github.ioのプロジェクトにプルリクエストを送ることで、リスト拒否に協力できます。

BlueprintをNPMに公開すると、そのBlueprintはマーケットプレイスで入手できるようになります。