从 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)
            }
        }
    }
...
}