はじめに
VS Codeでコーディングをするとき、Gitの操作やビルド、デプロイなど、決まった処理を手動で実行するのが面倒だなと思ったことがあるのではないでしょうか。tasks.json
というファイルを使えば、そういった面倒な手順を自動化し、開発効率を上げることができます。
この記事でやること
この記事では、作業ブランチにmainブランチの取り込みを行うGitコマンドを自動化してみます。mainブランチを取り込むために、以下のコマンドを毎回手で実行しているとします。
- git stash
- git pull origin main
- git stash pop
これをtasks.json
に定義して自動化したいと思います。
タスクの作成
タスクを作成するには、VS CodeのメニューのTerminal⇒Configure Tasksを選択します。
Create tasks.json file from templateを選択します。
Othersを選択します。
すると、.vscode
フォルダの中にtasks.json
ファイルが作成されます。デフォルトで以下のようなタスクが定義されています。
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "echo",
"type": "shell",
"command": "echo Hello"
}
]
}
tasksで配列が定義されていますが、この中のオブジェクト一つ一つがタスクです。上記サンプルだと、echoという名前のタスクで、command
に定義されたコマンドが実行されます。type
にはshell
とprocess
がありますが、shell
にするとシェルコマンドが使えるという違いがあります。
サンプルに倣って、Gitのコマンド一つ一つをタスクにします。
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "stash",
"type": "shell",
"command": "git stash"
},
{
"label": "pull",
"type": "shell",
"command": "git pull origin main"
},
{
"label": "stash pop",
"type": "shell",
"command": "git stash pop"
},
{
"label": "git tasks",
"type": "shell",
"dependsOrder": "sequence",
"dependsOn":[
"stash",
"pull",
"stash pop"
],
}
]
}
この配列の3つ目までがGitコマンド一つ一つに対応したタスクです。今回、これらのコマンドを自動的に実行してほしいので、それを定義したのが4つ目のgit tasks
です。dependsOn
の中で実行するタスクを列挙しています。dependsOrder
をsequence
にすることで各タスクが順番に実行されるようにしています。
実行する
ではこのタスクを実行してみます。
mainブランチから作業ブランチを作成します。その後、mainブランチに変更を加えて、作業ブランチと差分がある状態にします。
作業ブランチに切り替えて、VS CodeのメニューのTerminal⇒Run Taskを選択します。
git tasks
を選択します。
するとタスクが実行され、ターミナルにログが表示されます。作業ブランチを見ると、mainで変更した内容がマージされています。3つのGitコマンドを手動で行っていたのを自動化できました。
ショートカットキーで実行できるようにする
タスクは無事に実行されましたが、毎回メニューからコマンドを選択するのは少し面倒です。tasks.jsonに少し変更を加えて、デフォルトビルドタスクに設定することでショートカットキー(Windows: Ctrl + Shift + B、Mac: Cmd + Shift + B)でタスクを実行できるようになります。
最終的なtasks.jsonは以下のようになります。
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "stash",
"type": "shell",
"command": "git stash"
},
{
"label": "pull",
"type": "shell",
"command": "git pull origin main"
},
{
"label": "stash pop",
"type": "shell",
"command": "git stash pop"
},
{
"label": "git tasks",
"type": "shell",
"dependsOrder": "sequence",
"dependsOn":[
"stash",
"pull",
"stash pop"
],
// 追加
"problemMatcher": [],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
これで、タスクを実行したいときはショートカットキーを押すだけでできるようになりました。
おわりに
VS Codeのtasks.jsonを使った作業の自動化を試してみました。開発をする中での定型作業にはなるべく手間をかけたくないので、そういったときに非常に役に立つ機能だと思いました。