Kotlin - 如何导入节点包?

时间:2017-05-26 01:39:38

标签: npm kotlin

我正在开发一个使用Kotlin构建其前端的Web应用程序。

我希望能够导入npm包,以便我可以在我的Kotlin代码中使用它们。我找不到一个如何做到这一点的例子。有关如何从Kotlin生成npm包的示例,但没有如何在Kotlin代码中使用它们。

如果我可以导入Java库,在我的Kotlin代码中使用它们并将其编译为JavaScript,我会很高兴,但does not seem to be possible yet,这就是我想要导入npm代码的原因。

3 个答案:

答案 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的信息,以获取有关这一切是如何运作的更多信息。