Gradle doesn't emit kotlin.js

2019-06-22 13:00发布

问题:

I'm trying to compile my Kotlin app and set of Kotlin libraries to JavaScript. I've got that working well, but when I try to run it it can't find kotlin.js.

So what's going on here? When I compile using IDEA (instead of Gradle), it outputs kotlin.js just fine. I tried making my build script more like an example I found, but that wouldn't compile...


Here's a link to the code and project in question: https://github.com/BlueHuskyStudios/Decision-Cruncher/blob/SO/q/53582651/1/build.gradle

回答1:

For any others struggling in the future, I've had the following issue:

IntelliJ Kotlin/JS starter project has been generated with this in the gradle file:

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

which needs to be this to get the kotlin.js file

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



回答2:

Here you can find the code snippet to extract all .js files from Kotlin/JS libraries:

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