Gradle Groovy vs Gradle Kotlin DSL
The master branch uses Kotlin DSL for gradle. The Groovy equivalent can be found on the gradle_groovy
branch
(but apart from the initial commit it will not be further updated)
This repository shows how to interop between JavaScript and KotlinJS using different module systems. The examples can be opened in a browser and don't require any server runtime (like NodeJs).
The main goal is to show interop between plain JS and JS transpiled from Kotlin.
The first three examples are the most basic ones and have the same structure.
They only differ in the moduleKind
setting (plain, amd, umd) and of
course in the way they invoke the kotlin-generated JavaScript.
- 01-kt-plain-js
- 02-kt-amd-js
- 03-kt-umd-js
The rest of the examples use the kotlin-frontend-plugin
on top of the kotlinjs
plugin.
- 04-kt-frontend: Hello world for the
kotlin-frontend-plugin
- 05-kt-frontend-vaadin: Example using [Vaadin Components], e.g. [Vaadin Grid Component]
All examples use the kotlin2js
gradle plugin
plugins {
id("kotlin2js") version "1.3.21"
}
The configuration is pretty straighforward
tasks {
"compileKotlin2Js"(Kotlin2JsCompile::class) {
kotlinOptions {
outputFile = "${project.buildDir.path}/js/<name>.js"
moduleKind = "< plain | amd | umd >"
metaInfo = true
sourceMap = true
main = "call"
}
}
}
Important remarks for the Kotlin Gradle DSL
The plugin resolution is defined in the settings.gradle.kts:
pluginManagement {
repositories {
jcenter()
mavenCentral()
gradlePluginPortal()
maven {
url = uri("https://dl.bintray.com/kotlin/kotlin-eap")
}
}
resolutionStrategy {
eachPlugin {
if (requested.id.id == "kotlin2js") {
useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:${requested.version}")
}
if (requested.id.id == "org.jetbrains.kotlin.frontend") {
useModule("org.jetbrains.kotlin:kotlin-frontend-plugin:${requested.version}")
}
}
}
}
The kotlin2js
part is required for all examples.
The org.jetbrains.kotlin.frontend
case is only needed for example 4.
To run the examples:
./gradlew <example>:build
Then just open the html file from the example directory (plain.html, amd.html, umd.html or frontend.html) in a browser.