依赖项在 Kotiln/JS 中不可用

Dependency not available in Kotiln/JS

我正在尝试在 Kotlin/JS 项目中使用名为 KSVG 的库。维护者已尝试设置 K/JS 支持,但无法正常工作。在 IntelliJ 中,我将以下存储库和依赖项添加到我的 build.gradle.kts:

repositories {
    jcenter()
}
dependencies {
    implementation(kotlin("stdlib-js"))

    implementation("com.github.nwillc", "ksvg", "2.2.0")
}

没有显示错误,并且 IDE 出现 以正确加载依赖项,但它根本没有暴露在我的代码库中。有没有办法查看 为什么 此依赖项失败?库是否存在明显的问题阻止它在 K/JS 中工作?

K/JS 依赖关系类似于 K/JVM 依赖关系。通过将它们添加到您使用的 gradle 项目并编译它们。但是对于 运行 项目,您需要 运行 时间依赖性。 K/JVM 中的默认 run 任务会自动将 运行 时间依赖项添加到类路径中。但是,如果你想创建一个 jar,你必须手动执行此操作或创建一个 fat jar。

在 K/JS 中(对于浏览器,不确定 nodejs)它们不是包含 运行 时间依赖项的默认 运行 任务。您必须手动添加它们。他们有两种方法。

  1. runtimeClasspath任务中手动grep依赖js文件
  2. 使用 webpack 构建(类似于 fat jar 方法)

这是 webpack 构建的一个工作示例。 build 任务在 ./build/distributions/ 处创建了人工制品。 (他们也是一个 run 在端口 8080 启动服务器的任务)

build.gradle.kts

plugins {
    kotlin("js") version "1.3.72"
}

repositories {
    mavenCentral()
    maven("https://dl.bintray.com/nwillc/maven")
}

dependencies {
    implementation(kotlin("stdlib-js"))
    testImplementation(kotlin("test-js"))

    implementation("com.github.nwillc:ksvg-js:3.0.0")
}

kotlin.target.browser {}

main.kt

import com.github.nwillc.ksvg.elements.SVG
import kotlin.browser.document

fun main() {
    val svg = SVG.svg(false) {
        circle {
            cssClass = "black-stroke"
            id = "face"
            cx = "180"
            cy = "140"
            r = "80"
            fill = "#aa450f"
        }
    }
    document.write(svg.toString())
}