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

Posted

技术标签:

【中文标题】如何使用 Gradle 将 Reason 和 Ktor 应用程序打包在一起?【英文标题】:How to pack Reason and Ktor apps together in a bundle with Gradle? 【发布时间】:2018-08-28 13:34:46 【问题描述】:

我有以下结构:

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

我不知道如何构建一切,所以我可以:

    在本地运行服务器以便调试 制作生产 tar(例如使用 application 插件)

生产

制作应该是这样的:

ktor 作为主服务器 ktor 应用有 API 所有 react JS/html 文件也由 ktor 提供服务

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

我知道我可以创建 2 个单独的服务 - 一个用于响应,一个用于 API。但我想将它们捆绑到一个应用程序中。

地方发展

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

我想要什么

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

【问题讨论】:

这取决于“制作生产 tar”的含义——你打算如何在生产中服务 React 应用程序? @OliverCharlesworth 更新了问题 【参考方案1】:

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

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

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

【讨论】:

以上是关于如何使用 Gradle 将 Reason 和 Ktor 应用程序打包在一起?的主要内容,如果未能解决你的问题,请参考以下文章

如何将片段活动添加到 MainActivity.java 或 MainActivity.kt

如何使用终端编译和运行 Kotlin (.kt) 文件 [重复]

Android开发-kotlin基本使用(一)

工作服徽章显示为“未知”

Gradle 连接重置

android 自定义View 视差动画