我正在开发一个使用Kotlin构建其前端的Web应用程序。
我希望能够导入npm包,以便我可以在我的Kotlin代码中使用它们。我找不到一个如何做到这一点的例子。有关如何从Kotlin生成npm包的示例,但没有如何在Kotlin代码中使用它们。
如果我可以导入Java库,在我的Kotlin代码中使用它们并将其编译为JavaScript,我会很高兴,但does not seem to be possible yet,这就是我想要导入npm代码的原因。
答案 0 :(得分:2)
假设您想要
import {Express} from "express"
您将在Kotlin进行
@JsModule("express")
external class Express // if Express is a class in its module
这意味着,如果它是您要查找的功能
import {dollface} from "dolly"
您将在kotlin中将其定义为
@JsModule("dolly")
external fun dollface(faceColor: String)
查看更多详细信息here
答案 1 :(得分:2)
Since Kotlin 1.3.40
this works a little different。有一个新的JavaScript插件:
plugins {
id("org.jetbrains.kotlin.js") version "1.3.40"
}
所有功能都已移植到新功能后,旧的JavaScript Frontend插件将被弃用。
新插件带来了一种新的(目前处于实验阶段)添加NPM依赖项的方式:
dependencies {
implementation(npm("react", "16.8.3"))
}
(注意:npm(...)仅适用于JavaScript资源集)
Kotlin 1.3.50
通过自动为您使用的库生成Kotlin外部标头,使您的生活更加轻松。这也是一项实验性功能,需要在您的gradle.properties
中明确打开:
kotlin.js.experimental.generateKotlinExternals=true
答案 2 :(得分:1)
Kotlin front-end Gradle plugin正是您所要求的。
您可以将NPM依赖项添加到Gradle构建中:
kotlinFrontend {
npm {
dependency "style-loader" // production dependency
devDependency "karma" // development dependency
}
}
甚至有full stack examples使用此功能。
如果库还有一个Kotlin外部声明,您可以像任何Gradle依赖项一样导入它们。类似的东西:
dependencies {
compile "org.kotlin:kotlinx-thingy-js:1.0.0"
}
如果您有可用的Typescript定义,您也可以使用TS2KT生成外部,并将它们直接放入项目中。您可以在Maven或Github存储库中找到一些包装库。
您应该阅读在线参考指南中有关interoperating from Kotlin to JavaScript的信息,以获取有关这一切是如何运作的更多信息。