Home About Contact
Kotlin , Kotlin Native , JavaScript , Node.js

Kotlin Multiplatform 1.9.22 Kotlin/JS Hello, World!

久しぶりに Kotlin/JS に取り組もうと 過去のエントリー やりなおし Kotlin/JS Hello, World! 生成した js を HTML から使う / Node.js から使う などを見たが、すっかり状況が変わっていて動かない。

Kotlin のコードを(ただし Hello, World!標準出力するだけ)Node.js で動くようにビルドする方法を書き留めます。

おそらくは、このあたりを丁寧に読んでいけば済む話なのではないかと思う。 https://kotlinlang.org/docs/js-project-setup.html

環境

$ java -version
openjdk version "17.0.9" 2023-10-17

$ gradle -version
Gradle 8.5

$ npm -version
10.4.0

$ node --version
v18.17.1

hello-kjs プロジェクト

プロジェクトディレクトリを作成:

$ mkdir hello-kjs
$ cd hello-kjs
$ touch build.gradle.kts 

build.gradle.kts の内容:

plugins {
    kotlin("multiplatform") version "1.9.22"
}

version = "0.1"

repositories {
    mavenCentral()
}

kotlin {
    js {
        nodejs()
        binaries.executable()
    }
}

続いて App.kt の用意:

$ mkdir -p src/jsMain/kotlin/
$ touch src/jsMain/kotlin/App.kt

App.kt にコードを記述。

fun main() {
    println("Hello, World!")
    //console.log("Hello, World!")
}

console.log() でも作動する・・・ console オブジェクトが存在しているのか?

ここで、 一度 build して問題がないか確かめます。

$ gradle build

ビルドできたら、 続いて gradle wrapper しておきます。

$ gradle wrapper

これ以後は gradle コマンドの代わりに ./gradlew を使います。

といっても、あとは実行して確かめるだけです。

tasks を実行して、jsNodeRun タスクがあることを確かめます。

$ ./gradlew tasks

実行します。

$ ./gradlew jsNodeRun

> Task :jsNodeRun
Hello, World!

App.kt は、次の場所の hello-kjs.js になっていました。

$ find . -name hello-kjs.js
./build/js/packages/hello-kjs/kotlin/hello-kjs.js

以上です。