如何将javascript依赖项打包到Kotlin JS项目JAR中?

时间:2018-12-10 23:46:38

标签: gradle npm kotlin jar kotlin-js

我正在为Firebase Javascript SDK做一些kotlin JS包装器。因此,我使用外部关键字和@file:JsModule批注创建了项目,就像这样:

@file:JsModule("@firebase/messaging-types")
package my.package.firebase.messaging

import kotlin.js.Promise

external class FirebaseMessaging {
    fun getToken(): Promise<String?>
    ...
}

我可以将它发布到我的本地Maven存储库中:

task sourcesJar(type: Jar, dependsOn: classes) {
    classifier = 'sources'
    from sourceSets.main.allSource
}
artifacts {
    archives sourcesJar
}
publishing {
    publications {
        mavenJava(MavenPublication) {
            groupId = project.group
            artifactId = 'firebase-wrappers'
            version = project.version
            from components.java
            artifact sourcesJar
        }
    }
}

如何添加NPM依赖项并确保它在生成的JAR文件中可用?

1 个答案:

答案 0 :(得分:0)

实际上您有很多选择,但是最简单的选择是复制processResources任务中需要的所有信息,例如:

processResources {
  from ('/some/js/resources') {
    include '**/*.js'
  }
}

这样,任何文件都将最终保存在jar中。但是,请记住,到目前为止,这不会影响IntelliJ IDEA中的运行配置。也就是说,即使您正在运行配置,即使它是基于gradle构建的,也仍然会丢失此文件,并且此问题应该以其他方式解决。

另一种有用的技术是将此依赖项存储在单独的jar中(甚至可能在另一个子项目中),并将此jar作为运行时依赖项。