vscodeで、開いているファイルを実行する時に便利なのが「code-runner」という拡張機能です。
この拡張機能を入れると、毎回コマンドを打たなくてもボタンから実行できるので便利です。
code-runnerについては、詳しくはこちらの記事を参照してください。
code-runner を Denoに対応させる
さて、code-runnerでJavaScript / TypeScriptを実行する場合、デフォルトのコマンドはNode.jsとts-nodeになっています。
Denoを使用したい場合は、設定を上書きしてDenoコマンドを実行するように調整してやる必要があります。
具体的には、settings.json
に以下のように記述します。
"code-runner.executorMap": {
"javascript": "deno run --unstable",
"typescript": "deno run --unstable",
"javascriptreact": "deno run --unstable",
"typescriptreact": "deno run --unstable",
},
"code-runner.executorMapByGlob": {
"*{_,.}test.{js,ts,mjs,mts,jsx,tsx}": "deno test --unstable",
"test.{js,ts,mjs,mts,jsx,tsx}": "deno test --unstable",
"*{_,.}bench.{js,ts,mjs,mts,jsx,tsx}": "deno bench --unstable",
"bench.{js,ts,mjs,mts,jsx,tsx}": "deno bench --unstable",
},
"code-runner.runInTerminal": true,
各設定の解説
まず、code-runner.executorMap
で、JSとTSをそれぞれdeno run --unstable
で実行するよう設定しておきます。
--unstable
は無くてもいいですがお好みで。
"code-runner.executorMap": {
"javascript": "deno run --unstable",
"typescript": "deno run --unstable",
"javascriptreact": "deno run --unstable",
"typescriptreact": "deno run --unstable",
},
次に、テストファイルとベンチマークファイルの設定です。
Denoでは、
- ファイル名が
test.{js,ts,mjs,mts,jsx,tsx}
に一致するファイル - ファイル名が
_test.{js,ts,mjs,mts,jsx,tsx}
で終わるファイル - ファイル名が
.test.{js,ts,mjs,mts,jsx,tsx}
で終わるファイル
がテストファイルとして扱われます。(参考)
そのようなファイルに対しては、code-runner.executorMapByGlob
を使用してdeno test
コマンドが実行されるようにしておくと便利です。
(deno bench
コマンドも同様)
"code-runner.executorMapByGlob": {
"*{_,.}test.{js,ts,mjs,mts,jsx,tsx}": "deno test --unstable",
"test.{js,ts,mjs,mts,jsx,tsx}": "deno test --unstable",
"*{_,.}bench.{js,ts,mjs,mts,jsx,tsx}": "deno bench --unstable",
"bench.{js,ts,mjs,mts,jsx,tsx}": "deno bench --unstable",
},
最後にrunInTerminal
の設定です。
code-runnerは、デフォルトでは標準入力などを受け付けないモードでコマンドを実行します。
しかし、Denoを実行する際はファイルアクセスなどの権限を[y/N]
で入力することが多いです。そのため、code-runner.runInTerminal
をtrue
にしておくことで標準入力を受け付けるように設定しておきます。
"code-runner.runInTerminal": true,
以上、code-runnerでDenoを動かすための設定方法でした。