メインコンテンツまでスキップ

Blueprintの作成

JHipsterのBlueprintは、特定のJHipsterサブジェネレータの機能を拡張するために、そのサブジェネレータから構成されたYeomanジェネレータです。Blueprintは、サブジェネレータの定義されたゲッターをオーバーライドし、独自のテンプレートと機能を提供できます。

JHipsterのBlueprintは、JHipsterマーケットプレイスjhipster-blueprintというラベルで記載されています。

これにより、JHipsterの特定の部分(例えば、クライアントサイドテンプレートのみ)をオーバーライドできるサードパーティのBlueprintを作成できます。

Blueprintの使用

Blueprintを使用するには、次のコマンドを実行します。

jhipster --blueprints <blueprint name>

Blueprintの生成

組み込みのgenerate-blueprintジェネレータを使用して、Blueprintを作成することをお勧めします。

mkdir my-blueprint && cd my-blueprint

jhipster generate-blueprint

JHipsterのBlueprintは、依存関係としてgenerator-jhipsterを持つ必要があり、それをオーバーライドするために適切なサブジェネレータをインポートする必要があります。

import chalk from 'chalk';
import ClientGenerator from 'generator-jhipster/generators/client';

export default class extends ClientGenerator {
constructor(args, opts, features) {
super(args, opts, features);

if (this.options.help) return;

if (!this.options.jhipsterContext) {
throw new Error(`This is a JHipster blueprint and should be used only like ${chalk.yellow('jhipster --blueprints myBlueprint')}`);
}
}

get [ClientGenerator.INITIALIZING]() {
return {
// async preInitializingTemplateTask() {},
...super._initializing(),
// async postInitializingTemplateTask() {},
};
}

// その他の優先順位は簡潔にするため省略しています
}

Local Blueprint

Local Blueprintは、プロジェクトの.blueprintディレクトリ内に実装されます。デフォルトで検出され、使用されます。

KickstartでBlueprintの生成を使用するか、次のコマンドを実行します。

jhipster generate-blueprint --local-blueprint --sub-generators app --all-priorities

複数のサブジェネレータは、複数の機能を編成するのに便利です。LocalのBlueprintはスコープが限られている(アプリケーション)ため、アプリケーション(クライアントとサーバ)をカスタマイズするには、メインのサブジェネレータ1つで十分でしょう。

開発

優先順位

JHipsterから優先順位をカスタマイズする方法はいくつかあります。

  1. JHipsterに優先順位を処理させます。Blueprintは何も上書きしません。
get [Generator.INITIALIZING]() {
return super.initializing;
}
  1. Override the entire priority, this is when the blueprint takes control of a priority.
get [Generator.INITIALIZING]() {
return {
myCustomInitPriorityStep() {
// Do all your stuff here
},
myAnotherCustomInitPriorityStep(){
// Do all your stuff here
}
};
}
  1. 優先順位全体を上書きします。これは、Blueprintが優先順位を制御する場合です。
  get [Generator.INITIALIZING]() {
return {
myCustomInitPriorityStep() {
// ここですべての作業を行います。
},
myAnotherCustomInitPriorityStep(){
// ここですべての作業を行います。
}
};
}
  1. 優先順位を部分的にオーバーライドします。これは、BlueprintがJHipsterから優先順位を取得し、それをカスタマイズする場合となります。
    get [Generator.INITIALIZING]() {
return {
...super._initializing(),
displayLogo() {
// JHipsterの初期化優先度からdisplayLogoメソッドをオーバーライドします。
},
myCustomInitPriorityStep() {
// ここですべての作業を行います。
},
};
}
  1. 優先順位を装飾します。これは、JHipsterからの優先順位の前または後に、Blueprintがカスタムステップを実行する場合です。

これは、派生プロパティを生成するための優先順位付けで使用されるプロパティをカスタマイズするのに便利です。

    // 親ステップの前または後、あるいはその両方でBlueprint・ステップを実行します。
get initializing() {
return {
myCustomPreInitStep() {
// JHipsterステップの「前に」行うべき処理です。
// 例:nameCapitalized、nameLowercaseなどを生成する名前を設定します。
}
...super._initializing(),
myCustomPostInitStep() {
// JHipsterステップの「後に」行う処理です。
}
};
}
...super._initializing(),
myCustomPostInitStep() {
// Stuff to do AFTER the JHipster steps
}
};
}