如何使用 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