lowcode-engine 出码模块无法处理自定义的插槽

6yjfywim  于 2022-10-25  发布在  其他
关注(0)|答案(2)|浏览(158)

Describe the bug (required)/详细描述 bug(必填)

自定义一个Solution,包含一些非ProjectBuilder 类定义的插槽,出码时自定义的插槽无法被调用

A clear and concise description of what the bug is. / 请提供清晰且精确的 bug 描述
有问题的代码 ProjectBuilder 类 generateProject 方法:

// globalStyle
    if (parseResult.project && builders.globalStyle) {
      const { files } = await builders.globalStyle.generateModule(parseResult.project);

      buildResult.push({
        path: this.template.slots.globalStyle.path,
        files,
      });
    }

    // htmlEntry
    if (parseResult.project && builders.htmlEntry) {
      const { files } = await builders.htmlEntry.generateModule(parseResult.project);

      buildResult.push({
        path: this.template.slots.htmlEntry.path,
        files,
      });
    }

    // packageJSON
    if (parseResult.project && builders.packageJSON) {
      const { files } = await builders.packageJSON.generateModule(parseResult.project);

      buildResult.push({
        path: this.template.slots.packageJSON.path,
        files,
      });
    }

    // TODO: 更多 slots 的处理??是不是可以考虑把 template 中所有的 slots 都处理下?

    // Post Process

这里的 TODO 其实已经发现了没有处理的 slots,是不是补一下全遍历?

另外针对于不同插件 generateModule 入参不尽相同这块感觉有些违背接口设计原则:

// entry
    if (parseResult.project && builders.entry) {
      const { files } = await builders.entry.generateModule(parseResult.project);

      buildResult.push({
        path: this.template.slots.entry.path,
        files,
      });
    }

    // appConfig
    if (builders.appConfig) {
      const { files } = await builders.appConfig.generateModule(parseResult);

      buildResult.push({
        path: this.template.slots.appConfig.path,
        files,
      });
    }

To Reproduce (required)/如何复现 bug?(必填,非常重要)

自定义解决方案,自定义非系统默认的插槽,IProjectBuilder实现使用引擎提供的 ProjectBuilder (非自定义的实现)。

8yparm6h

8yparm6h1#

@LeoYuan 有没有人跟踪这个问题啊,还是不动让使用者去自定义builder?

vulvrdjw

vulvrdjw2#

假如急的话,建议自己读下代码哈~

相关问题