创建JHipster蓝图以扩展字段类型提示

时间:2019-07-10 13:06:04

标签: jhipster

我已经创建了一个可行的测试蓝图,所以我有点主意,但是我想确保自己正确地解决了这个问题。

我想扩展字段类型提示以提供自定义类型以及String,int,boolean等。

这意味着我需要修改模板,例如template / src / main / java / package / domain / Entity.java.ejs

我的蓝图仅包含generators / client和generators / entity-client,所以我想我必须:

对于模板,我可以从JHipster存储库中复制它们吗? 我是不是该 ?如果没有,为什么不呢?还有什么替代方法?

如果复制它们是正确的举动,我是否必须复制所有内容?还是只是我要修改的? (我尚未检查是否需要修改所有内容)

当JHipster更新时,我想我要么手动合并新文件,要么冒着我的代码与JHipster代码越来越不同的风险?

有没有更简单的方法可以实现我要执行的操作? 如果我能说我想在该提示中添加TypeX和TypeY并提供仅涵盖这些类型的有限模板(例如,用于导入的模板,用于字段的模板以及用于setter和getter的模板),那将是很好的。如果仅提供导入,则使用通用模板。

1 个答案:

答案 0 :(得分:1)

我将尽力回答您的所有问题。 首先创建蓝图,我建议甚至在另一个文件夹中也使用https://github.com/jhipster/generator-jhipster-blueprint并复制当前项目所需的全部内容。我认为这更容易,您可以选择要添加的生成器,例如实体服务器和实体。

提示阶段

如果要修改提示阶段,可以将阶段与JHipster这样合并

get prompting() {
        const phaseFromJHipster = super._prompting();
        const phaseFromMe = {
            askForTheme: prompts.askForTheme,
            setMySharedConfigOptions() {
                this.configOptions.theme = this.theme;
            }
        };

        return { ...phaseFromJHipster, ...phaseFromMe };
    }

(来源:https://github.com/avdev4j/samSuffit/tree/master/generators/client

但是这样做不能修改现有问题,在这种情况下,您应该将所有现有问题复制到蓝图中。

模板管理

您的蓝图与JHipster版本链接。正如我以前所说的(在我的演讲中),除了配置文件,您应该从JHipster复制和修改模板,因为它处理起来有些棘手。对于他们,我更喜欢使用JHipster API(例如“ replaceContent()”)或needle API,该API允许您将一些代码插入某些文件中(例如pom.xml文件中的依赖项)。 当然,您可以使用所需的方式,但是根据经验,我更喜欢控制模板并在升级JH​​ipster版本时将其合并。

您应该只复制要修改的模板,合并JHipster和编写阶段。 JHipster使用yeoman,后者使用memfs处理文件生成。每个文件都在内存中创建并在最后一步转储。您可以轻松覆盖文件而不会影响性能。

    get writing() {
        const phaseFromJHipster = super._writing();
        /* eslint-disable */
        const phaseFromSam = {
            writeSamFiles() {
                if (this.clientFramework === 'angularX') {
                    return writeAngularFiles.call(this);
                }
            }
        };
        /* eslint-enable */

        return { ...phaseFromJHipster, ...phaseFromSam };
    }

JHipster升级

我建议您在升级JH​​ipster时检查模板,并在需要时应用修改。否则,您可能会遇到错误。另外,我建议在您的蓝图package.json中设置最终版本(如6.1.0)的JHipster。

据我所知,没有办法去做你想做的事。我正在考虑一种轻松修改提示的方法,如果您想贡献自己的想法,则不复制所有其他问题;)。

您可以查看我用于演讲的蓝图样本: https://github.com/avdev4j/samSuffit/

希望它能为您提供帮助,随时问更多。

致谢