前章では、Denoを実行する際はできるだけ必要な権限のみを指定するとよいと記載しました。
しかし、毎回長いオプションを指定するのは面倒な場合もあるかもしれません。
そこで、この章ではタスクランナーを使って、効率的にタスクを管理する方法について解説します。
タスクランナーについて
タスクランナーを導入することで、以下の効果が期待できます。
- コマンドを打つまたは覚える手間の軽減
- 頻繁に実行するコマンドを設定ファイルなどで管理することで、チームのメンバーが同様の環境などを再現しやすくなる
Denoでは、以下のタスクランナーの使用をよく見かけます。
-
deno task
(Deno組み込みのタスクランナー) - velociraptor
- Make
この章では、deno task
を使ったタスク管理方法について解説します。
deno task
を使ってタスクを管理する
deno task
とは?
Deno本体に組み込まれたタスクランナーです。
npm-scriptsライクな方法でタスクを定義することができるのが特徴です。
簡単な使い方
まず、プロジェクトディレクトリにdeno.json
またはdeno.jsonc
という名前のファイルを用意します。
{
"tasks": {
"test": "RUST_BACKTRACE=1 deno test --allow-env --allow-read",
"typecheck": "deno check mod.ts"
}
}
このように、各タスクをtasks
プロパティ内で定義していきます。
定義したタスクはdeno task [タスク名]
の形式で実行できます。
例えば、以下のコマンドを実行すると、test
タスクで定義されたdeno test --allow-env --allow-read
コマンドが実行されます。
$ deno task test
また、スクリプトには追加の引数を与えることもできます。
例えば、以下のコマンドを実行すると、deno test --allow-env --allow-read "some_test.ts"
と同様の振る舞いをします。
$ deno task test some_test.ts
定義したタスクを一覧表示する
deno task
コマンドを引数なしで実行すると、実行可能なタスクの一覧を表示できます。
$ deno task
環境変数
deno task
ではコマンドを実行する際に環境変数を宣言することができます。
{
"tasks": {
"test": "RUST_BACKTRACE=1 deno test --allow-env --allow-read"
}
}
deno task
コマンドは宣言された環境変数を解析し、タスクを実行する際に自動で設定してくれるため、この例はWindowsでも問題なく動作します。
複数のコマンドを順番に実行する
複数のコマンドを順番に実行したいときは、Bashなどのシェルと同様に&&
でコマンドを連結できます。
{
"tasks": {
"check": "deno fmt --check && deno lint"
}
}
この状態でdeno task check
を実行します。
$ deno task check
すると、
deno fmt --check
deno lint
の順にコマンドが実行されます。
ポイント
-
deno task
を使うとタスクの管理がしやすくなります。