如何用 Gradle 将 Reason 和 Ktor 应用打包在一起?

How to pack Reason and Ktor apps together in a bundle with Gradle?

我有以下结构:

/             -> root
/react-app    -> Reason app (initialized using cli)
/webapp       -> gradle app, maven structure with Gradle build file

我不确定如何构建所有内容以便我可以:

  1. 运行 本地服务器,以便我可以调试
  2. 生产tar(例如使用application插件)

生产

制作应该是这样的:

换句话说,我想通过单个网络应用程序提供所有服务。

我知道我可以制作 2 个独立的服务 - 一个用于 React,一个用于 API。但我想将它们捆绑到一个应用程序中。

本地发展

本地开发应该很快。我正在考虑将 React 和 API 部分分开,仅用于本地目的,因为这样在本地 运行 更容易。但是对于生产,我需要从单个应用程序提供这两个服务。

我想要什么

是根中的单个 Gradle 并具有模块。虽然 ktor 可以是一个模块,但我不确定如何使用 react 模块。

我不确定 Kotlin 和 Ktor 部分,但在 Reason/React 方面,我建议 Parcel 将您的 HTML/JS/CSS 资产捆绑成适合服务的形式静态的,也可以将其用作开发服务器以进行快速迭代。

Parcel 在大多数情况下需要零配置,您可以将其指向您的入口点资产,通常是您 UI 项目中的 index.html 文件,在生产构建中它将捆绑所有内容(HTML/JS/CSS) 在 dist/ 子目录中准备好提供服务。然后只需将您的 Kotlin webapp 指向 dist/index.html 用于 / 路由。

对于开发构建,Parcel 将在 localhost:1234 和 auto-reloading 自动启动开发服务器。当您在 UI 上迭代时,BuckleScript 增量构建以及 Parcel 重新加载应该非常快——通常几乎是即时的。