2

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

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

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

没有显示错误,IDE似乎可以正确加载依赖项,但它根本没有在我的代码库中公开。有没有办法查看为什么这种依赖会失败?库是否存在明显的问题,阻止它在 K/JS 中工作?

4

1 回答 1

2

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

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

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

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

构建.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 {}

主文件

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())
}
于 2020-07-19T07:45:02.683 回答