Reputation: 5219
I've got a Kotlin JS project and I'm trying to add some npm dependencies via Gradle. My understanding is that I have to add the npm deps to the the dependencies of this source set, like so:
plugins {
id("org.jetbrains.kotlin.js") version "1.3.61"
}
repositories {
mavenCentral()
jcenter()
}
kotlin {
sourceSets["main"].dependencies {
implementation(npm("react", "16.8.3"))
implementation(npm("@jetbrains/kotlin-css", "1.0.0-pre.89"))
implementation(npm("@jetbrains/kotlin-css-js", "1.0.0-pre.89"))
implementation(npm("@jetbrains/kotlin-styled", "1.0.0-pre.89"))
implementation(npm("react-google-charts"))
}
target {
browser {
}
}
}
dependencies {
implementation(kotlin("stdlib-js"))
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-js:1.3.2")
}
}
however my source code doesn't compile, for example all of these imports fail to compile:
import kotlinx.html.js.onClickFunction
import react.RBuilder
import react.dom.button
import react.dom.div
I can see all the npm modules have downloaded in to build/js/node_modules
What am I missing ?
Upvotes: 1
Views: 1238
Reputation: 905
You should use kotlin wrappers for react:
sourceSets["main"].dependencies {
implementation(npm("@jetbrains/kotlin-react", "16.9.0-pre.89"))
implementation(npm("@jetbrains/kotlin-react-dom", "16.9.0-pre.89"))
implementation(npm("@jetbrains/kotlin-css", "1.0.0-pre.89"))
implementation(npm("@jetbrains/kotlin-css-js", "1.0.0-pre.89"))
implementation(npm("@jetbrains/kotlin-styled", "1.0.0-pre.89"))
implementation(npm("react-google-charts"))
implementation("org.jetbrains.kotlinx:kotlinx-html-js:0.6.12")
}
Upvotes: 3