この記事は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 の使われ方を調整できます。