如何使用循环多次生成 JHipster 源文件?

How to generate JHipster source files multiple times using a loop?

在 generator-jhipster 仓库中,具体来说 files.js in ../generators/server/files.js,它会根据某些条件生成 java 源文件和目录。

例如:

  {
            condition: generator => generator.databaseType === 'cassandra',
            path: SERVER_MAIN_SRC_DIR,
            templates: [
                {
                    file: 'package/config/cassandra/CassandraConfiguration.java',
                    renameTo: generator => `${generator.javaDir}config/cassandra/CassandraConfiguration.java`
                }
            ]
   }

这将获取 package/config/cassandra 目录中的模板文件 CassandraConfiguration.java.ejs 并在 运行 成功连接 jhipster 应用程序后生成 java 源文件 CassandraConfiguration.java .

我的问题:是否可以在此模板中生成多个 CassandraConfiguration.java 文件(假设具有不同的名称,例如:CassandraConfiguration0.java、CassandraConfiguration1.java 等...)一个 "LOOP"?我知道我可以 运行 使用 make 目录 (mkdirp) 进行循环,但我不确定如何将它应用于制作文件,因为它不允许我在模板中创建循环:[].

这可能吗?(我不熟悉yeoman的语法):

  {
        for(var i = 0; i < 3; i++) {
            condition: generator => generator.databaseType === 'cassandra',
            path: SERVER_MAIN_SRC_DIR,
            templates: [
                {
                    file: 'package/config/cassandra/CassandraConfiguration.java',
                    renameTo: generator => `${generator.javaDir}config/cassandra/CassandraConfiguration[i].java`
                }
             ]
         }
   }

这应该分别生成:CassandraConfiguration0.java、CassandraConfiguration1.java 和 CassandraConfiguration2.java。

您的方法是错误的,因为您试图在声明性对象 (serverFiles) 中使用命令式样式。

您应该创建一个循环来将条目添加到 serverFiles 数组。

for(let i = 0; i < 3; i++) {
    let entry = {
        condition: generator => generator.databaseType === 'cassandra',
        path: SERVER_MAIN_SRC_DIR,
        templates: [
            {
                file: 'package/config/cassandra/CassandraConfiguration.java',
                renameTo: generator => `${generator.javaDir}config/cassandra/CassandraConfiguration${i}.java`
            }
        ]
     };
     serverFiles.db.push(entry);
 }