我正在为 jvm 和 js 创建一个 kotlin mutliplatform 项目。我的 build.gradle.kts 看起来像这样:
plugins {
id ("org.jetbrains.kotlin.multiplatform")
}
repositories {
mavenCentral()
}
kotlin {
jvm() {
compilations["main"].kotlinOptions{
jvmTarget = "1.8"
}
}
js() {
compilations["main"].kotlinOptions{
outputFile = "${buildDir}/nodejs/common.js"
moduleKind = "commonjs"
sourceMap = true
verbose = true
}
}
sourceSets {
val commonMain by getting {
dependencies {
implementation (kotlin("stdlib"))
implementation (kotlin("stdlib-common"))
}
}
val commonTest by getting {
dependencies {
implementation (kotlin("test-common"))
implementation (kotlin("test-annotations-common"))
}
}
jvm().compilations["main"].defaultSourceSet {
dependencies {
implementation (kotlin("stdlib-jdk8"))
}
}
jvm().compilations["test"].defaultSourceSet {
dependencies {
implementation (kotlin("test"))
implementation (kotlin("test-junit"))
}
}
js().compilations["main"].defaultSourceSet {
dependencies {
implementation (kotlin("stdlib-js"))
}
}
js().compilations["test"].defaultSourceSet {
dependencies {
implementation (kotlin("test-js"))
}
}
}
}
当我构建项目时,会创建一个 common.js,其内容如下所示:
(function (_, Kotlin) {
'use strict';
var Kind_CLASS = Kotlin.Kind.CLASS;
var ArrayList_init = Kotlin.kotlin.collections.ArrayList_init_287e2$;
var emptyList = Kotlin.kotlin.collections.emptyList_287e2$;
var NotImplementedError_init = Kotlin.kotlin.NotImplementedError;
function commonSharedCode(platform) {
return 'Common: Hi! ' + platform.greetingMethod + '(' + platform.name + ') AND NOW IN BEAUTIFUL ' + platform.beautifulPlatform();
}
function Platform(greetingMethod, name) {
this.greetingMethod = greetingMethod;
this.name = name;
}
Platform.prototype.beautifulPlatform = function () {
return '***' + this.name + '***';
};
// ... //
return _;
}(module.exports, require('kotlin')));
现在我在项目外部创建了一个简单的 javascript 文件并尝试使用创建的代码(就像您在教程中看到的那样 - 他们创建了一个使用 mutliplatform 项目作为依赖项的应用程序)。这似乎是不可能的,因为创建的代码没有导出任何功能等。我希望能够做类似的事情
const common = require('common');
function myTest () {
console.log(common.Platform('Hello', 'World'));
}
您是否知道如何构建项目以完成这些事情?