从 ktor 服务 kotlin multiplatform javascript
Serve kotlin multiplatform javascript from ktor
我已经建立了一个多模块 gradle 项目,其中包含一个公共模块和一个 ktor 模块。
公共模块是一个 kotlin 多平台库。
当我从 Intellij 运行 它时,我希望能够从 ktor 服务器提供从公共库生成的 javascript 文件。
目前 ktor 设置为将资源作为静态内容提供:
static("/static") {
resources()
}
ktor模块依赖于common模块:
dependencies {
compile project(':common')
...
}
我假设在 Intellij 中 运行ning 能够浏览到 http://localhost:8080/static/common.js 以检索公共模块 JS 构建的输出(写入 common\build\classes\kotlin\js\main),但这确实不工作。
通过包含复制任务解决了这个问题。请注意,此处的 kotlin 全栈 mpp (https://github.com/ktorio/ktor-samples/tree/master/mpp/fullstack-mpp) 有一个使用 webpack 输出的示例。
kotlin {
jvm() {
task copyJsToJvm(type: Copy) {
from("$buildDir/classes/kotlin/js/main")
include '*.*'
into "$buildDir/classes/kotlin/jvm/main"
}
compilations.main {
tasks.getByName(processResourcesTaskName) {
dependsOn(copyJsToJvm)
}
}
}
...
}
我已经建立了一个多模块 gradle 项目,其中包含一个公共模块和一个 ktor 模块。
公共模块是一个 kotlin 多平台库。
当我从 Intellij 运行 它时,我希望能够从 ktor 服务器提供从公共库生成的 javascript 文件。
目前 ktor 设置为将资源作为静态内容提供:
static("/static") {
resources()
}
ktor模块依赖于common模块:
dependencies {
compile project(':common')
...
}
我假设在 Intellij 中 运行ning 能够浏览到 http://localhost:8080/static/common.js 以检索公共模块 JS 构建的输出(写入 common\build\classes\kotlin\js\main),但这确实不工作。
通过包含复制任务解决了这个问题。请注意,此处的 kotlin 全栈 mpp (https://github.com/ktorio/ktor-samples/tree/master/mpp/fullstack-mpp) 有一个使用 webpack 输出的示例。
kotlin {
jvm() {
task copyJsToJvm(type: Copy) {
from("$buildDir/classes/kotlin/js/main")
include '*.*'
into "$buildDir/classes/kotlin/jvm/main"
}
compilations.main {
tasks.getByName(processResourcesTaskName) {
dependsOn(copyJsToJvm)
}
}
}
...
}