6

我正在尝试将我的 Kotlin 应用程序和一组 Kotlin 库编译为 JavaScript。我已经很好地工作了,但是当我尝试运行它时它找不到kotlin.js.

那么这里发生了什么?当我使用 IDEA(而不是 Gradle)编译时,它的输出kotlin.js很好。我试着让我的构建脚本更像我找到的一个例子,但这不会编译......


这是相关代码和项目的链接:https ://github.com/BlueHuskyStudios/Decision-Cruncher/blob/SO/q/53582651/1/build.gradle

4

3 回答 3

2

这只对我有用。unzip由于某种原因没有工作

task assembleWeb() {
    configurations.implementation.setCanBeResolved(true)
    configurations.implementation.each { File file ->
        if (file.path.indexOf('kotlin-stdlib-js') >= 0) {
            exec {
                workingDir "$projectDir/web"
                standardOutput = new ByteArrayOutputStream()
                commandLine "7z", "e", file.absolutePath, "kotlin.js", "-aos", "-r"
            }
        }
    }
    dependsOn classes
}

assemble.dependsOn assembleWeb

注意"-aos"参数。此标志将防止覆盖现有文件

于 2019-10-19T18:07:52.583 回答
1

在这里您可以找到从 Kotlin/JS 库中提取所有 .js 文件的代码片段:

task assembleWeb(type: Sync) {
    configurations.compile.each { File file ->
        from(zipTree(file.absolutePath), {
            includeEmptyDirs = false
            include { fileTreeElement ->
                def path = fileTreeElement.path
                path.endsWith(".js") && (path.startsWith("META-INF/resources/") || 
                    !path.startsWith("META-INF/"))
            }
        })
    }
    from compileKotlin2Js.destinationDir
    into "${projectDir}/web"

    dependsOn classes
}

assemble.dependsOn assembleWeb
于 2018-12-12T09:24:00.500 回答
0

对于任何其他在未来挣扎的人,我遇到了以下问题:

IntelliJ Kotlin/JS 启动项目已在 gradle 文件中生成:

implementation "org.jetbrains.kotlin:kotlin-stdlib-js"

需要这个才能获取kotlin.js文件

compile "org.jetbrains.kotlin:kotlin-stdlib-js"

于 2019-03-30T01:55:21.370 回答