🚀 VS Code で で入手しましょう!

マルチルート ワークスペース

Visual Studio Code では、マルチルート ワークスペースを使用して複数のプロジェクト フォルダーを操作できます。これは、複数の関連プロジェクトを同時に作業する場合に役立ちます。たとえば、製品のソース コードを更新するときに最新の状態に保ちたい製品ドキュメントのリポジトリがあるとします。

multi-root hero

: VS Code の「ワークスペース」の概念の詳細については、「VS Code の「ワークスペース」とは?」を参照してください。明示的にマルチルート ワークスペースを作成しない限り、「ワークスペース」はプロジェクトの単一のルート フォルダーにすぎません。

フォルダーの追加

既存のワークスペースに別のフォルダーを追加するのは簡単です。フォルダーを追加するには、いくつかの方法があります。

ワークスペースにフォルダーを追加する

ファイル > ワークスペースにフォルダーを追加 コマンドを実行すると、新しいフォルダーを選択するための [フォルダーを開く] ダイアログが表示されます。

Add Root Folder

ルート フォルダーを追加すると、エクスプローラーに新しいフォルダーがファイル エクスプローラーのルートとして表示されます。ルート フォルダーを右クリックし、コンテキスト メニューを使用してフォルダーを追加または削除できます。

Remove Root Folder

ファイル エクスプローラーは以前と同様に動作します。ルート フォルダー間でファイルを移動したり、コンテキスト メニューとエクスプローラー ビューで提供される一般的なファイル操作アクションを使用したりできます。

files.exclude などの設定は、各ルート フォルダーに対して構成されている場合はサポートされ、グローバル ユーザー設定として構成されている場合はすべてのフォルダーでサポートされます。

ドラッグ アンド ドロップ

ドラッグ アンド ドロップを使用してワークスペースにフォルダーを追加できます。フォルダーをファイル エクスプローラーにドラッグして、現在のワークスペースに追加します。複数のフォルダーを選択してドラッグすることもできます。

: 単一のフォルダーを VS Code のエディター領域にドロップすると、フォルダーはシングル フォルダー モードで開きます。複数のフォルダーをエディター領域にドラッグ アンド ドロップすると、新しいマルチルート ワークスペースが作成されます。

ドラッグ アンド ドロップを使用して、ワークスペース内のフォルダーを並べ替えることもできます。

複数の選択が可能なネイティブ ファイルを開くダイアログ

プラットフォームのネイティブ ファイルを開くダイアログで複数のフォルダーを開くと、マルチルート ワークスペースが作成されます。

コマンドライン --add

フォルダーまたは複数のフォルダーを、マルチルート ワークスペースの最後にアクティブだった VS Code インスタンスに追加します。

  code --add vscode vscode-docs

フォルダーの削除

ワークスペースからフォルダーを削除するには、ワークスペースからフォルダーを削除 コンテキスト メニュー コマンドを使用します。

ワークスペース ファイル

複数のフォルダーを追加すると、最初は UNTITLED WORKSPACE というタイトルのワークスペースに配置され、その名前はワークスペースを保存するまで維持されます。ワークスペースを永続的な場所に (たとえば、デスクトップ上) 保存したい場合を除き、ワークスペースを保存する必要はありません。UNTITLED WORKSPACE は、使用している VS Code インスタンスが開いている限り存在します。UNTITLED WORKSPACE を使用しているインスタンスを完全に閉じると、将来再び開く予定がある場合は保存するように求められます。

save workspace dialog

ワークスペースを保存すると、.code-workspace ファイルが作成され、ファイル名がファイル エクスプローラーに表示されます。

ワークスペースを名前を付けて保存...

ワークスペース ファイルを新しい場所に移動する場合は、ファイル > ワークスペースを名前を付けて保存 コマンドを使用できます。これにより、新しいワークスペース ファイルの場所に対する相対的な正しいフォルダー パスが自動的に設定されます。

ワークスペース ファイルを開く

ワークスペースを再度開くには、次の操作を実行できます。

  • プラットフォームのエクスプローラーで .code-workspace ファイルをダブルクリックします。
  • ファイル > ワークスペースを開く コマンドを使用し、ワークスペース ファイルを選択します。
  • ファイル > 最近使用したファイルを開く (⌃R (Windows、Linux Ctrl+R)) リストからワークスペースを選択します。
    • ワークスペースには、フォルダーと区別するための (ワークスペース) サフィックスが付いています。

open recent workspace list

VS Code で単一のフォルダーを開いている場合の フォルダーを閉じる と同様に、アクティブなワークスペースを閉じるための ワークスペースを閉じる (⌘K F (Windows、Linux Ctrl+K F)) コマンドがあります。

ワークスペース ファイルのスキーマ

.code-workspace のスキーマは非常に簡単です。絶対パスまたは相対パスを持つフォルダーの配列があります。ワークスペース ファイルを共有する場合は、相対パスの方が適しています。

Explorer のフォルダーにわかりやすい名前を付けるために、name 属性を使用してフォルダーの表示名をオーバーライドできます。たとえば、フォルダー名でコンテンツを簡単に識別できるように、プロジェクト フォルダーに「Product」や「Documentation」などの名前を付けることができます。

{
  "folders": [
    {
      // Source code
      "name": "Product",
      "path": "vscode"
    },
    {
      // Docs and release notes
      "name": "Documentation",
      "path": "vscode-docs"
    },
    {
      // Yeoman extension generator
      "name": "Extension generator",
      "path": "vscode-generator-code"
    }
  ]
}

これにより、次のエクスプローラー表示になります。

named folders

上記の例からわかるように、ワークスペース ファイルにコメントを追加できます。

ワークスペース ファイルには、settings の下のワークスペースのグローバル設定、および extensions の下の拡張機能の推奨事項を含めることもできます。これについては後で説明します。

workspace file schema

一般的な UI

エディター

マルチルート ワークスペースを使用している場合、VS Code UI にはわずかな変更しかありません。主な変更点は、フォルダー間のファイルを区別することです。たとえば、複数のフォルダー内のファイル間で名前の衝突がある場合、VS Code はタブ付きヘッダーにフォルダー名を含めます。

tabbed headers

タブ付きヘッダーに常にフォルダーを表示したい場合は、workbench.editor.labelFormat 設定の「medium」または「long」の値を使用して、フォルダーまたはフルパスを表示できます。

"workbench.editor.labelFormat": "medium"

開いているエディタークイック オープン (⌘P (Windows、Linux Ctrl+P)) リストなどの VS Code UI には、フォルダー名が含まれています。

quick pick has folder name

ファイル アイコン テーマを使用しており、アクティブなテーマがサポートしている場合は、特別なワークスペース アイコンが表示されます。

以下は、組み込みの Minimal (Visual Studio Code) ファイル アイコン テーマのワークスペース アイコンです。

custom workspace icon

グローバル検索などの VS Code 機能は、すべてのフォルダーで動作し、検索結果をフォルダー別にグループ化します。

multi-root search results

マルチルート ワークスペースを開いている場合、含めるファイル ボックスで ./ 構文を使用することで、単一のルート フォルダー内を検索するように選択できます。たとえば、./project1/**/*.txt と入力すると、project1/ ルート フォルダーの下にあるすべての .txt ファイルが検索されます。

設定

1 つのワークスペースに複数のルート フォルダーがある場合、各ルート フォルダーに .vscode フォルダーを配置して、そのフォルダーに適用する必要がある設定を定義できます。設定の衝突を避けるために、マルチルート ワークスペースを使用している場合は、リソース (ファイル、フォルダー) 設定のみが適用されます。エディター全体に影響を与える設定 (UI レイアウトなど) は無視されます。たとえば、2 つのプロジェクトが両方ともズーム レベルを設定することはできません。

ユーザー設定は、単一フォルダー プロジェクトと同様にサポートされており、マルチルート ワークスペース内のすべてのフォルダーに適用されるグローバル ワークスペース設定を設定することもできます。グローバル ワークスペース設定は、.code-workspace ファイルに保存されます。

{
  "folders": [
    {
      "path": "vscode"
    },
    {
      "path": "vscode-docs"
    },
    {
      "path": "vscode-generator-code"
    }
  ],
  "settings": {
    "window.zoomLevel": 1,
    "files.autoSave": "afterDelay"
  }
}

単一フォルダー インスタンスから複数フォルダーに移行すると、VS Code は最初のフォルダーから適切なエディター全体のsettingsを新しいグローバル ワークスペース設定に追加します。

設定エディターを使用して、さまざまな設定ファイルを簡単に確認および変更できます。設定エディターのタブを使用すると、ユーザー設定、グローバル ワークスペース設定、および個々のフォルダー設定を選択できます。

settings dropdown

次のコマンドを使用して、特定の設定ファイルを開くこともできます。

  • 基本設定: ユーザー設定を開く - グローバル ユーザー設定を開きます
  • 基本設定: ワークスペース設定を開く - ワークスペース ファイルの設定セクションを開きます。
  • 基本設定: フォルダー設定を開く - アクティブなフォルダーの設定を開きます。

グローバル ワークスペース設定はユーザー設定をオーバーライドし、フォルダー設定はワークスペースまたはユーザー設定をオーバーライドできます。

サポートされていないフォルダー設定

サポートされていないエディター全体のフォルダー設定は、フォルダー設定でグレー表示され、デフォルトのフォルダー設定 リストから除外されます。設定の前に情報アイコンも表示されます。

unsupported setting information

デバッグ

マルチルート ワークスペースでは、VS Code はすべてのフォルダーで launch.json デバッグ構成ファイルを検索し、フォルダー名をサフィックスとして付けて表示します。さらに、VS Code はワークスペース構成ファイルで定義された起動構成も表示します。

debugging dropdown

上記の例は、TSLint 拡張機能のデバッグ構成を示しています。tslint 拡張機能フォルダーには、VS Code 拡張機能ホストで実行されている拡張機能を起動するための launch 構成があり、tslint-server フォルダーには、実行中の TSLint サーバーにデバッガーをアタッチするための attach 構成もあります。

vscode-tslint ワークスペースtslinttslint-server、および tslint-tests フォルダーの 3 つの 構成を追加 コマンドも確認できます。構成を追加 コマンドは、フォルダーの .vscode サブフォルダーにある既存の launch.json ファイルを開くか、新しいファイルを作成してデバッグ構成テンプレート ドロップダウンを表示します。

debugging template dropdown

構成で使用される変数 (たとえば、${workspaceFolder} または現在非推奨の ${workspaceRoot}) は、それらが属するフォルダーに対して相対的に解決されます。ルート フォルダーの名前を変数に追加 (コロンで区切る) することで、ワークスペース フォルダーごとに変数をスコープすることができます。

ワークスペース起動構成

ワークスペース スコープの起動構成は、ワークスペース構成ファイルの "launch" セクション (コマンド パレットの ワークスペース: ワークスペース構成ファイルを開く) にあります。

Workspace Settings

または、新しい起動構成は、[起動構成] ドロップダウン メニューの [構成を追加 (ワークスペース)] エントリから追加できます。

Add Config

複合起動構成は、ワークスペース内で名前が一意である限り、名前で個々の起動構成を参照できます (例: )。

  "compounds": [{
      "name": "Launch Server & Client",
      "configurations": [
        "Launch Server",
        "Launch Client"
      ]
  }]

個々の起動構成名が一意でない場合は、より詳細な「folder」構文で修飾フォルダーを指定できます。

  "compounds": [{
      "name": "Launch Server & Client",
      "configurations": [
        "Launch Server",
        {
          "folder": "Web Client",
          "name": "Launch Client"
        },
        {
          "folder": "Desktop Client",
          "name": "Launch Client"
        }
      ]
  }]

compounds に加えて、ワークスペース構成ファイルの launch セクションには、通常の起動構成も含めることができます。使用されるすべての変数が特定のフォルダーに明示的にスコープされていることを確認してください。そうしないと、ワークスペースに対して無効になります。明示的にスコープされた変数の詳細については、変数リファレンスを参照してください。

プログラムが「Program」フォルダーにあり、ステップ実行時に「Library」フォルダーからのすべてのファイルをスキップする必要がある起動構成の例を次に示します。

"launch": {
  "configurations": [{
      "type": "node",
      "request": "launch",
      "name": "Launch test",
      "program": "${workspaceFolder:Program}/test.js",
      "skipFiles": [
        "${workspaceFolder:Library}/out/**/*.js"
      ]
  }]
}

タスク

VS Code がデバッグ構成を検索する方法と同様に、VS Code はワークスペース内のすべてのフォルダーで gulp、grunt、npm、および TypeScript プロジェクト ファイルからタスクを自動検出しようとし、tasks.json ファイルで定義されたタスクも検索します。タスクの場所は、フォルダー名のサフィックスで示されます。tasks.json で定義されたタスクは、バージョン 2.0.0 である必要があることに注意してください。

tasks dropdown

上記の TSLint 拡張機能のワークスペースの例から、tslint および tslint-tests フォルダーの tasks.json ファイルからの 2 つの 構成済みタスク と、多数の自動検出された npm および TypeScript コンパイラーの 検出されたタスク があることがわかります。

ワークスペース タスク構成

ワークスペース スコープのタスクは、ワークスペース構成ファイルの "tasks" セクション (コマンド パレットの ワークスペース: ワークスペース構成ファイルを開く) にあります。ワークスペース構成ファイルで定義できるのは、"shell" および "process" タイプのタスクのみです。

ソース管理

マルチルート ワークスペースでは、複数のアクティブなリポジトリがある場合に概要を示す ソース管理プロバイダー セクションがあります。これらは、複数の SCM プロバイダーによって提供される場合があります。たとえば、Git リポジトリを Azure DevOps Server ワークスペースと並べて配置できます。このビューでリポジトリを選択すると、下にソース管理の詳細が表示されます。

multiple scm providers

Ctrl+クリック または Shift+クリック を使用して、複数のリポジトリを選択できます。それらの詳細は、下に個別の領域として表示されます。

拡張機能

拡張機能の作成者の場合は、マルチルート ワークスペース API の採用ガイドを確認して、VS Code マルチルート ワークスペース API と、拡張機能を複数のフォルダーで適切に動作させる方法について学習できます。

以下は、マルチルート ワークスペース API を採用している一般的な拡張機能の一部です。

: 拡張機能がまだ複数のフォルダーをサポートしていない場合でも、マルチルート ワークスペースの最初のフォルダーで引き続き動作します。

拡張機能の推奨事項

VS Code は、フォルダーの .vscode サブフォルダーにある extensions.json ファイルを介したフォルダー レベルの拡張機能の推奨事項をサポートしています。また、.code-workspace ファイルに追加することで、グローバル ワークスペース拡張機能の推奨事項を提供することもできます。拡張機能: 推奨される拡張機能の構成 (ワークスペース フォルダー) コマンドを使用して、ワークスペース ファイルを開き、拡張機能識別子 ({publisherName}.{extensionName}) を extensions.recommendations 配列に追加できます。

{
  "folders": [
    {
      "path": "vscode"
    },
    {
      "path": "vscode-docs"
    }
  ],
  "extensions": {
    "recommendations": ["eg2.tslint", "dbaeumer.vscode-eslint", "esbenp.prettier-vscode"]
  }
}

次のステップ

  • VS Code の「ワークスペース」とは? - シングルフォルダーおよびマルチルート ワークスペースの詳細。
  • デバッグ - アプリケーションのデバッグを設定する方法を学習します。
  • タスク - タスクを使用すると、VS Code 内でコンパイラーなどの外部ツールを実行できます。

よくある質問

単一のプロジェクト フォルダーでの作業に戻るにはどうすればよいですか?

ワークスペースを閉じてフォルダーを直接開くか、ワークスペースからフォルダーを削除します。

拡張機能の作成者として、何をする必要がありますか?

マルチルート ワークスペース API の採用ガイドを参照してください。ほとんどの拡張機能は、マルチルート ワークスペースを簡単にサポートできます。