この記事はgpt-5.1によって生成されました。
概要
VS Code のタスク実行では、デフォルトで複数タスクが同じターミナル(shell)を共有します。
タスク実行のたびに新しい shell を使いたい場合や、同じタスクでも毎回新しいパネルを開きたい場合は、tasks.json の "presentation" 設定で制御します。
基本設定
tasks.json 内でタスクごと、または全体のデフォルトに対して "presentation" を指定します。
"presentation": {
"reveal": "always", // または "silent" など
"panel": "new" // ← ここがポイント
}
"panel" の値と意味
-
"shared"- デフォルト
- 複数のタスクが同じターミナルを共有する(shell を使い回す)
-
"dedicated"- タスクごとに専用ターミナルを 1 つ割り当てる
- 同じタスクを再実行した場合は、同じ専用ターミナルを再利用する
-
"new"- タスク実行のたびに新しいターミナルを作成する
- 同じタスクであっても毎回新しいパネル(ターミナル)が開く
- 毎回新しい shell を起動し、使い回さない
「毎回必ず新しい shell で実行したい」「同一タスク実行でも毎回新しいパネルが欲しい」場合は "panel": "new" を指定します。
タスク単位での設定例
実行のたびに新しい shell を使うタスク
(同一タスクでも新規パネルを開く)
// .vscode/tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "run script",
"type": "shell",
"command": "echo hello && sleep 3",
"presentation": {
"reveal": "always",
"panel": "new" // 同じタスクを何度実行しても毎回新しいターミナル
}
}
]
}
この設定では、"run script" タスクを実行するたびに、
同じタスク名であっても毎回新しいターミナル(shell)が開かれます。
同じタスク用に専用ターミナルを使う場合
"presentation": {
"reveal": "always",
"panel": "dedicated"
}
- タスクごとに 1 つ専用ターミナルを持つ
- 同じタスクを再実行するときは同じターミナルを再利用
- 異なるタスク同士はターミナルを共有しない
すべてのタスクに対するデフォルト設定
毎回タスクごとに "presentation" を書きたくない場合は、tasks.json のトップレベルの "options" でデフォルトを指定できます。
// .vscode/tasks.json
{
"version": "2.0.0",
"options": {
"presentation": {
"panel": "new" // ここで全タスク共通のデフォルトを指定
}
},
"tasks": [
{
"label": "build",
"type": "shell",
"command": "npm run build"
},
{
"label": "test",
"type": "shell",
"command": "npm test"
}
]
}
ここで "panel": "new" を設定しておくと、個々のタスクで "presentation" を上書きしない限り、
すべてのタスクが実行のたびに新しいターミナル(shell)で起動されます。
まとめ
-
タスク実行ごとに新しい shell を使いたい
→"panel": "new"
→ 同一タスクでも毎回新しいパネルが開く -
タスクごとに専用ターミナルを使いたい(同じタスクは同じパネルを再利用)
→"panel": "dedicated" -
複数タスクでターミナルを共有してもよい
→"panel": "shared"(デフォルト)
tasks.json の "presentation" 設定で、VS Code のタスク実行時の shell の使われ方を細かく制御できます。