目次
Kotlin 1.2.41 を前提に、 Kotlin CLI の使い方をまとめました。
スクリプトを実行する場合
拡張子 kts
のファイルを作って実行します。 拡張子が kts
でない場合は、中身の如何にかかわらず実行してくれません。 error: source entry is not a Kotlin file
というエラーが出ます。
1 |
kotlinc -script sample.kts |
このスクリプトにおいて、 sample.kts
は main
関数 がなくても実行できます。
コード例
1 |
println("Hello World!") |
ファイルをコンパイルする
JVM コンパイル
次のコマンドを実行して、 Kotlin のファイル (拡張子 kt
) をコンパイルして .class
ファイルを作成します。
1 |
kotlinc Sample.kt |
この場合、 SampleKt.class
が生成されます。
次のようにすると JAR が作成されます。
1 |
kotlinc Sample.kt -include-runtime -d Sample.jar |
出力された Sample.jar
を次のようにして実行します。 方法は2通りあります。
1 |
kotlinc Sample.jar |
1 |
java -jar Sample.jar |
JS コンパイル
次のようにすると JavaScript ファイル sample.js
が出力されます。 mapファイル, metaファイル はオプションを付けることで出力可能です。
1 |
kotlinc-js Sample.kt -output sample.js |
Kotlin DCE JS
DCE とは dead code elimination のことで、 使われていないコードは JavaScript のファイルを意味なく大きくするだけなので消しましょうという機能です。 (参考: https://kotlinlang.org/docs/reference/javascript-dce.html)
例えば次のように Hello.kt
を作成します。 ここで 関数a
は使われていないコードとして作成します。
1 2 3 4 5 6 7 |
fun main(vararg args: String) { println("Kotlin") } fun a() { println(1) } |
これを次のようにコンパイルします。
1 |
kotlinc-js Hello.kt -output hello.js |
出力される hello.js
は次のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
if (typeof kotlin === 'undefined') { throw new Error("Error loading module 'hello'. Its dependency 'kotlin' was not found. Please, check whether 'kotlin' is loaded prior to 'hello'."); } var hello = function (_, Kotlin) { 'use strict'; var println = Kotlin.kotlin.io.println_s8jyv4$; function main(args) { println('Kotlin'); } function a() { println(1); } _.main_vqirvp$ = main; _.a = a; main([]); Kotlin.defineModule('hello', _); return _; }(typeof hello === 'undefined' ? {} : hello, kotlin); |
ここで kotlin-dce-js
を次のように実行します。
1 |
kotlin-dce-js hello.js |
オプション -d
で出力ディレクトリを指定できますが、ここでは指定していません。 デフォルトの min
ディレクトリに次の hello.js
が出力されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
if (typeof kotlin === 'undefined') { throw new Error("Error loading module 'hello'. Its dependency 'kotlin' was not found. Please, check whether 'kotlin' is loaded prior to 'hello'."); } var hello = function (_, Kotlin) { 'use strict'; var println = Kotlin.kotlin.io.println_s8jyv4$; function main(args) { println('Kotlin'); } _.main_vqirvp$ = main; main([]); return _; }(typeof hello === 'undefined' ? {} : hello, kotlin); //# sourceMappingURL=hello.js.map |
使用されていなかった 関数 a
は除去されていますね。
REPL (Read Eval Print Loop)
次のコマンドで、 REPL を実行できます。
1 |
kotlinc |
:quit
を入力することで終了できます。 私はよく Ctrl+D で終了しています。
ヘルプ
kotlin
, kotlinc
, kotlinc-js
, kotlin-dce-js
の各コマンドに -h
オプション を付けて実行するとそれぞれのコマンドのヘルプが表示されます。