Chapter 15

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

uki00a
uki00a
2021.05.30に更新

前章では、できるだけ必要な権限のみを指定するよう記載しました。

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

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

タスクランナーについて

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

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

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

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

velociraptorを使ってタスクを管理する

velociraptorとは?

Denoで実装されたタスクランナーです。

npm-scriptsに影響を受けており、タスクの設定をJSONやYAML形式で定義できるのが特徴です。

インストール

deno installコマンドを使ってインストールしてみましょう。

$ deno install -qA -n vr https://deno.land/x/velociraptor@1.0.0-beta.18/cli.ts

以下のコマンドを実行し、バージョンが表示されれば、無事にインストールに成功しています。

$ vr --version
1.0.0-beta.18

簡単な使い方

まず、プロジェクトディレクトリにscripts.jsonというファイルを用意します。(ちなみに、YAMLで設定を記述することも可能です。その場合はファイル名をscripts.yamlにしてください。)

scripts.json
{
  "scripts": {
    "test": {
      "desc": "Run tests",
      "cmd": "deno test --allow-env --allow-read"
    },
    "typecheck": {
      "desc": "Run type checking",
      "cmd": "deno cache mod.ts"
    }
  }
}

このように、各スクリプトをscriptsプロパティ内で定義します。

定義したスクリプトはvr [スクリプト名]の形式で実行できます。

例えば、以下のコマンドを実行すると、testスクリプトのcmdで指定されたdeno test --allow-env --allow-readコマンドが実行されます。

$ vr test

また、スクリプトには追加の引数を与えることもできます。

例えば、以下のコマンドを実行すると、deno test --allow-env --allow-read --filter "testServer"と同様の振る舞いをします。

$ vr test --filter "testServer"

定義したスクリプトを一覧表示する

vrコマンドを引数なしで実行すると、実行可能なスクリプトの一覧を表示できます。

$ vr

環境変数

envプロパティを定義しておくと、スクリプトの実行時にそれらの環境変数が設定されます。

scripts.json
{
  "env": {
    "HOGE": "PIYO"
  },
  "scripts": {
    "test": {
      "desc": "Run tests",
      "cmd": "deno test --allow-env --allow-read --allow-write --allow-run --allow-net"
    }
  }
}

また、envFileプロパティを設定することで、指定されたファイルから環境変数を読み込むこともできます。

scripts.json
{
  "envFile": ".env",
  "scripts": {
    "test": {
      "desc": "Run tests",
      "cmd": "deno test --allow-env --allow-read --allow-write --allow-run --allow-net"
    }
  }
}

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

cmdプロパティに配列を指定することで、複数のコマンドを順番に実行することもできます。

scripts.json
{
  "scripts": {
    "check": {
      "desc": "Run fmt and lint",
      "cmd": [
        "deno fmt --check",
        "deno lint"
      ]
    }
  }
}

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

$ vr check

すると、

  1. deno fmt --check
  2. deno lint

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

ポイント

  • velociraptorやMakeなどを使うと、タスクの管理がしやすくなります。

リンク