久しぶりに 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
プロジェクトディレクトリを作成:
$ 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
以上です。