创建模块

JHipster模块是一个Yeoman生成器,由特定的JHipster子生成器组成,以继承JHipster的某些常用功能。 JHipster模块还可以注册其自身,以充当JHipster生成器的钩子。

JHipster模块在JHipster市场 上列出。

这允许创建可以访问JHipster变量和函数并像标准JHipster子生成器一样工作的第三方生成器。 钩子机制在应用程序生成和实体生成之前和之后调用第三方生成器。

示例

JHipster Fortune 模块 在JHipster生成的应用程序中生成“fortune cookie”页面。

这是我们的示例模块,展示了如何使用JHipster的变量和函数来创建自己的生成器。

或者,您可以使用JHipster模块生成器 来帮助您初始化模块。

JHipster模块的基本规则

JHipster模块:

  • 是NPM包,并且是Yeoman生成器。
  • 遵循http://yeoman.io/generators/ 上列出的Yeoman规则的扩展,并且可以使用yo命令进行安装,使用和更新。 它不是以generator-为前缀,而是以generator-jhipster-为前缀,并且不仅仅具有yeoman-generator关键字,还必须具有两个关键字:yeoman-generatorjhipster-module
  • 注册为钩子的JHipster模块不应在被挂钩的生成器中调用process.exit

导入generator-jhipster

JHipster模块必须导入generator-jhipster:

    const util = require('util');
    const BaseGenerator = require('generator-jhipster/generators/generator-base');
    const jhipsterConstants = require('generator-jhipster/generators/generator-constants');

    const JhipsterGenerator = generator.extend({});
    util.inherits(JhipsterGenerator, BaseGenerator);

    module.exports = JhipsterGenerator.extend({

        // all your yeoman code here

    });

然后,您可以直接访问JHipster的变量和函数。

钩子

JHipster将在其某些任务之前和之后调用某些挂钩,下面列出了当前可用和计划中的任务。

  • 实体创建后钩子
  • 实体创建前钩子 [计划中]
  • 应用程序创建后钩子 [计划中]
  • 应用程序创建前钩子 [计划中]

JHipster模块生成器现在可以选择生成它。 JHipster模块的主要生成器由最终用户运行时,可以注册以充当钩子。 您需要从主(应用)生成器中调用registerModule方法以注册为钩子,您需要在方法中传递以下参数,如下所示:

this.registerModule(npmPackageName, hookFor, hookType[, callbackSubGenerator[, description]])
  • npmPackageName 生成器的npm包名称。如: jhipster-generator-fortune
  • hookFor 上面的哪个Jhipster钩子应该注册到 ( 值必须是entityapp)
  • hookType 在生成器阶段将其挂在哪里 ( 值必须是prepost)
  • callbackSubGenerator [可选] 被调用子生成器,如果未指定,则将调用模块的主(应用)生成器,例如:barfoo生成器。
  • description [可选] 生成器的描述,如果未给出,我们将根据给定的npm名称生成默认值

可用的变量和功能

配置中的变量:

您必须使用此功能:

您可以在.yo-rc.json中访问配置:

    this.jhipsterAppConfig = this.getAllJhipsterConfig();
    this.baseName = this.jhipsterAppConfig.baseName;
    this.packageName = this.jhipsterAppConfig.packageName;
    this.clientFramework = this.jhipsterAppConfig.clientFramework;

全局变量:

您可以在generator-constants 中使用常量:

    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中使用所有功能。

    this.angularAppName = this.getAngularAppName(); // 获取Angular应用程序名称。
    this.printJHipsterLogo(); // 打印JHipster徽标

注意: generator-base.js 中的功能和 generator-constants.js 中的变量是公共API的一部分,因此将遵循semver版本控制。但是其他文件如generator-base-private.jsutils.js 等将不会遵循semver版本控制,并且可能会在次要版本中破坏方法签名。

向JHipster市场注册模块

要使您的模块在JHipster市场中可用,您需要确保在已发布的npm包package.json中有2个关键字yeoman-generatorjhipster-module 。 如果您在市场上找到不是JHipster模块的任何条目,则可以通过将其添加到modules-config.json文件blacklistedModules部分中来将其列入黑名单,方法是对 [jhipster/jhipster.github.io项目] (https://github.com/jhipster/jhipster.github.io) 发出拉取请求

如果JHipster团队对其进行验证,则您的模块将变为“已验证”。

将模块发布到NPM后,您的模块将在我们的市场上可用。