PaulNUK
PaulNUK

Reputation: 5219

Kotlin js isn't picking up dependencies from gradle implementation(npm section in build file

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

Answers (1)

vanyochek
vanyochek

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

Related Questions