Chapter 15

タスクランナーを使って効率的にタスクを管理する

uki00a
uki00a
2022.07.24に更新

前章では、Denoを実行する際はできるだけ必要な権限のみを指定するとよいと記載しました。

しかし、毎回長いオプションを指定するのは面倒な場合もあるかもしれません。

そこで、この章ではタスクランナーを使って、効率的にタスクを管理する方法について解説します。

タスクランナーについて

タスクランナーを導入することで、以下の効果が期待できます。

  • コマンドを打つまたは覚える手間の軽減
  • 頻繁に実行するコマンドを設定ファイルなどで管理することで、チームのメンバーが同様の環境などを再現しやすくなる

Denoでは、以下のタスクランナーの使用をよく見かけます。

  • deno task (Deno組み込みのタスクランナー)
  • velociraptor
  • Make

この章では、deno taskを使ったタスク管理方法について解説します。

deno taskを使ってタスクを管理する

deno taskとは?

Deno本体に組み込まれたタスクランナーです。

npm-scriptsライクな方法でタスクを定義することができるのが特徴です。

簡単な使い方

まず、プロジェクトディレクトリにdeno.jsonまたはdeno.jsoncという名前のファイルを用意します。

deno.json
{
  "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ではコマンドを実行する際に環境変数を宣言することができます。

deno.json
{
  "tasks": {
    "test": "RUST_BACKTRACE=1 deno test --allow-env --allow-read"
  }
}

deno taskコマンドは宣言された環境変数を解析し、タスクを実行する際に自動で設定してくれるため、この例はWindowsでも問題なく動作します。

複数のコマンドを順番に実行する

複数のコマンドを順番に実行したいときは、Bashなどのシェルと同様に&&でコマンドを連結できます。

deno.json
{
  "tasks": {
    "check": "deno fmt --check && deno lint"
  }
}

この状態でdeno task checkを実行します。

$ deno task check

すると、

  1. deno fmt --check
  2. deno lint

の順にコマンドが実行されます。

ポイント

  • deno taskを使うとタスクの管理がしやすくなります。

リンク