【问题标题】:Creating JHipster blueprint to extend the field type prompt创建 JHipster 蓝图以扩展字段类型提示
【发布时间】:2019-07-10 13:06:04
【问题描述】:

我已经创建了一个有效的测试蓝图,所以我有点明白了,但我想确保我正确地处理这个问题。

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

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

我的蓝图只有生成器/客户端和生成器/实体客户端,所以我想我必须:

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

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

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

有没有更简单的方法来实现我想要做的事情? 如果我可以说我想在该提示中添加 TypeX 和 TypeY 并提供仅涵盖这些类型的有限模板,例如导入模板、字段模板以及 setter 和 getter 模板,那就太好了。如果只提供导入,则使用通用模板。

【问题讨论】:

    标签: jhipster


    【解决方案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,它允许你将一些代码插入到一些文件中(比如 pom.xml 文件中的依赖项)。 当然你可以使用你想要的方式,但是我更喜欢在升级 JHipster 版本时控制我的模板并合并它们。

    你应该只复制你想要修改的模板,合并 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 升级

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

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

    您可以查看我在演讲中使用的蓝图示例: https://github.com/avdev4j/samSuffit/

    希望对你有帮助,欢迎提问。

    问候,

    【讨论】:

    • 所以我在我现有的蓝图中添加了这个(这是有效的):generators/entity/prompts.js,并在 BLOB 下添加了 { value: 'customType', name: 'Custom Type ' },但是在向实体添加字段时,我看不到 customType 的选项。
    猜你喜欢
    • 2014-04-22
    • 2012-12-24
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    • 2018-08-30
    • 2015-08-18
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多