--- title: "請問 tasks.json 要怎麼用?site:code.visualstudio.com" author: - "[[Felo]]" tags: - "clippings" date: "2025-03-13T23:10:57+08:00" time: "2025-03-13T23:10:57+08:00" description: "# Visual Studio Code 中的 tasks.json 使用指南tasks.json 是 Visual Studio Code 中用於定義和配置任務的檔案,這些任務可以自動化您的開發工作流程,例如編譯程式碼、執行測試或部署應用程式。## 基本概念tasks.json 檔案通常位於專案的 `.v" source: "https://felo.ai/search/ccdXpZ3og78S9XHjW3NcgV?invite=dOLn1YloyaD3j" published: --- 網際網路17 個資料來源1 種語言Claude 3.7 Sonnet 回答完成 ## Visual Studio Code 中的 tasks.json 使用指南 tasks.json 是 Visual Studio Code 中用於定義和配置任務的檔案,這些任務可以自動化您的開發工作流程,例如編譯程式碼、執行測試或部署應用程式。 ## 基本概念 tasks.json 檔案通常位於專案的 `.vscode` 資料夾中,用於定義可以在 VS Code 中執行的任務。這些任務可以是建置程式碼、執行測試、啟動伺服器等各種操作[4](https://code.visualstudio.com/docs/editor/tasks)。 ## 建立 tasks.json 檔案 要建立 tasks.json 檔案,您可以: 1. 使用快捷鍵 `Ctrl+Shift+B` (Windows/Linux) 或 `⇧⌘B` (macOS) 執行「執行建置任務」命令 2. 如果尚未設定任務,VS Code 會提示您建立 tasks.json 檔案 3. 或者,您可以手動在專案的 `.vscode` 資料夾中建立此檔案 ## tasks.json 的基本結構 一個基本的 tasks.json 檔案結構如下: ```json { "version": "2.0.0", "tasks": [ { "label": "任務名稱", "type": "shell", "command": "要執行的命令", "group": { "kind": "build", "isDefault": true }, "problemMatcher": ["$msCompile"] } ] } ``` ## 重要屬性說明 tasks.json 中的主要屬性包括: - **label**: 任務的名稱,會顯示在任務列表中,建議使用描述性名稱以便區分不同任務[7](https://code.visualstudio.com/docs/cpp/config-msvc)[8](https://code.visualstudio.com/docs/cpp/config-mingw) - **type**: 任務類型,常見的有 `shell`(在殼層中執行命令)和 `process`(直接執行程序) - **command**: 要執行的命令 - **args**: 命令的參數,以陣列形式提供 - **group**: 任務分組,例如 `build`(建置)或 `test`(測試),可以設定 `isDefault: true` 來指定預設任務 - **problemMatcher**: 用於解析命令輸出中的錯誤和警告,例如 `$msCompile`(適用於 Microsoft 編譯器)或 `$gcc`(適用於 GCC)[7](https://code.visualstudio.com/docs/cpp/config-msvc)[8](https://code.visualstudio.com/docs/cpp/config-mingw) ## 使用變數 tasks.json 支援變數替換,使用 `${variableName}` 語法。常用的預定義變數包括: - `${workspaceFolder}`: VS Code 中開啟的資料夾路徑 - `${file}`: 目前開啟的檔案 - `${fileBasename}`: 目前開啟檔案的基本名稱 - `${fileBasenameNoExtension}`: 不含副檔名的檔案名稱 - `${fileDirname}`: 目前開啟檔案的資料夾路徑[5](https://code.visualstudio.com/docs/reference/variables-reference) 例如,編譯 C++ 檔案的任務可能使用: ```json { "command": "g++", "args": ["${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}.exe"] } ``` ## 使用者輸入變數 您可以在任務中使用使用者輸入變數,讓使用者在執行任務時提供值: ```json { "version": "2.0.0", "tasks": [ { "label": "任務名稱", "command": "${input:variableID}" } ], "inputs": [ { "id": "variableID", "type": "promptString", "description": "請輸入值" } ] } ``` 支援的輸入類型有: - `promptString`: 顯示輸入框獲取字串 - `pickString`: 顯示下拉選單讓使用者選擇 - `command`: 執行命令並使用其結果[5](https://code.visualstudio.com/docs/reference/variables-reference) ## 特定平台的任務配置 tasks.json 支援針對不同程式語言和平台的特定配置: ### C/C++ 任務範例 ```json { "version": "2.0.0", "tasks": [ { "label": "建置 C++ 檔案", "type": "shell", "command": "g++", "args": ["${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}.exe"], "group": { "kind": "build", "isDefault": true }, "problemMatcher": ["$gcc"] } ] } ``` ### TypeScript 任務範例 ```json { "version": "2.0.0", "tasks": [ { "type": "typescript", "tsconfig": "tsconfig.json", "problemMatcher": ["$tsc"], "group": { "kind": "build", "isDefault": true } } ] } ``` ## 任務相依性 您可以使用 `dependsOn` 屬性定義任務之間的相依關係,確保任務按特定順序執行: ```json { "label": "執行", "type": "shell", "command": "node app.js", "dependsOn": ["建置"] } ``` ## 使用 IntelliSense 在編輯 tasks.json 檔案時,可以使用 VS Code 的 IntelliSense 功能獲取完整的任務屬性和值列表。只需按下 `Ctrl+Space` 觸發建議[4](https://code.visualstudio.com/docs/editor/tasks)。 ## 執行任務 定義任務後,您可以通過以下方式執行: 1. 使用快捷鍵 `Ctrl+Shift+B` 執行預設建置任務 2. 使用命令面板 (`Ctrl+Shift+P`) 執行「任務:執行任務」命令,然後選擇要執行的任務 透過正確配置 tasks.json,您可以大幅提高開發效率,自動化重複性工作,並簡化開發工作流程。 相關 tasks.json 檔案的版本號有什麼意義?如何在 tasks.json 中使用變數來提高靈活性?tasks.json 支援哪些程式語言的特定配置?如何設定任務之間的相依性以確保執行順序?在 VS Code 中使用 IntelliSense 來編輯 tasks.json 有哪些好處? 1 code.visualstudio.com > docs > getstarted > tips-and-tricks 視覺工作室代碼提示和技巧 例如,tasks.json用於任務跑者和啟動。 使用首選項:顏色主題命令或使用鍵盤快捷鍵。 2 code.visualstudio.com > docs > containers > reference 自定義Docker擴展名 - Visual Studio代碼 這些任務允許大量控制和自定義。 最終配置是一般默認值,平台特定默認值(例如Node.js,Python或.NET)和用戶輸入的組合。 當用戶輸入與默認情況發生衝突時。 任務使用Docker命令行(CLI)構建Docker圖像。 該任務可以自身使用,也可以用作使用Docker容器運行和/或調試應用程序的一系列任務的一部分。 任務intaks.json可用於構建任何docker映像,擴展名具有明確的支持(和簡化的配置)。 除非從平台中推斷出。-t或\\ -tagbuildargsbuild參數應用於命令行。 這是鍵值對的列表。 這是鍵值對(JSON對象)的列表。 除了此處指定的標籤外,labelcom.microsoft.created-by還將設置tovisual-studio-code添加到圖像中。 可以通過setterincludedEfaults |可以關閉此行為|屬性|描述|,| --- | --- |,| AppProject | .NET項目文件(.csproj,.fsproj等)與Dockerfile和Docker-Build任務關聯。 總是需要。 |。 該任務可以自身使用,也可以作為一系列任務的一部分來調試使用docker容器的應用程序。 該對象指定的值直接應用於Docker Run Clica。\*平台屬性是一個提示,該提示會更改Docker-Run任務Defeults運行默認值。 support supports theNode.js(docker-run){“版本”:“ 2.0.0”,“ tasks”:\\ \[{label“:” run node image“,“ node”:“ docker-run”,“ docker-run”,“ platform”,“ node” \\ node“ \\\] \\\] \\\] \\\]} \\ platform defaultS-defaults-defaults-defaults-defaults-defaults-dodeaults-depkes,任務提出以下選項:|屬性|推斷值|,| --- | --- |,| dockerrun.command |從package.json(如果存在)中從npm啟動腳本生成,則是從poffage.json中的主屬性生成的。 |,| dockerrun.containername |源自應用程序包名稱。 |,| dockerrun.image |來自依賴的Dock-Build任務(如果存在)或從應用程序包名稱派生的標籤本身是從軟件包中的名稱屬性派生的。 |。 |屬性|推斷值|,| --- | --- |,| dockerrun.command |由Python對像生成,由Python調試器調用。 |,| dockerrun.containername |源自根工作區文件夾的基本名稱。 |,| dockerrun.image |來自依賴的Dock-build任務(如果存在)或從根工作區文件夾的基本名稱派生的標籤。 |。圖像,|屬性|推斷值|,| --- | --- |,| dockerrun.containername |源自根工作區文件夾的基本名稱。 |,| dockerrun.env |根據需要添加以下環境雜物:aspnetcore \\ \_environment,aspnetcore \\ \_urls和dotnet \\ \_polling \\ \_file \\ \_watcher。 |,| dockerrun.image |來自依賴的Dock-build任務(如果存在)或從根工作區文件夾的基本名稱派生的標籤。 |,| dockerrun.os | Linux |,| dockerrun.volumes |根據需要添加以下卷:本地應用程序文件夾,源文件夾,調試器文件夾,Nuget軟件包文件夾和Nuget後備文件夾。 |。 除非另有說明,否則所有屬性都是可選的。屬性|描述|,| --- | --- |,| Dockerrun |控制Docker Run命令執行的選項(請參見下文)。 除非設置平台,否則需要。 |,|平台|確定平台:.NET(NetCore)或Node.js(節點)和Docker Run命令的默認設置。 |,|節點|對於Node.js項目,這控制了各種選項(請參見下文)。 |,| python |對於Python項目,這控制了各種選項(請參見下文)。 |,| NetCore |對於.NET項目,這控制了各種選項(請參見下文)。 ||屬性|描述|默認|,| --- | --- | --- |,| LocalPath |將映射的本地計算機上的路徑。 必需的。 | |,|容器路徑|將映射本地路徑的容器中的路徑。 必需的。 | |,|滲透|容器在映射路徑上具有權限。 可以是RO(讀)或RW(讀 - 沃里炎)。 |容器依賴。 |任務)|屬性|描述|默認|,| --- | --- | --- |,|軟件包|與Docker-Surruin任務關聯的package.json文件的路徑。 | root工作區文件夾中的文件package.json。 |,| EnabledeBugging |是否可以使用容器進行調試。 | false |,| Inspectmode |定義最初的相互作用,使應用程序和調試器(默認或斷點)。 值默認值允許應用程序運行,直到調試器附加。 值斷點阻止應用程序運行,直到調試器附加。 |默認|,| Inspectport |應該進行調試的端口。 | 9229 |。 5678 |。 | |,|文件|要運行的Python文件。 | |。NetCore對象屬性(|屬性|描述| ---- | --- |,|批准| .NET項目文件(.csproj,.fsproj等) 必需的。 |,| cunpussl |是否配置ASP.NET Core SSL證書和OHER設置以在容器中啟用SSL。 |,| EnabledeBugging |是否啟用啟動容器進行調試。 這將推斷出addite卷映射和調試所需的其他選項。 |使用Docker Compose Line(CLI)創建並啟動Docker容器。 該任務可以自身使用,也可以作為一系列任務的一部分來調試使用Docker容器的應用程序。UP必須指定,但不能同時指定。Docker-Compose Docker downfilesthe docker列表complocker complote complots yaml文件以在thedocker-compose命令中使用。 如果未指定,則在命名和標記Docker對象時使用的Docker Composite CLOS FOALLETE項目名稱。 如果在編寫時使用替代項目名稱,則必須在撰寫時指定相同的項目名稱。 對於這些可自定義的Docker命令,配置設置可用於設置執行內容的模板。 另外,您可以選擇使用正則表達式定義多個模板,該模板在匹配時暗示應使用模板的上下文。 這些模板支持一些與thedocker.com的值相似的令牌設置,否則將嘗試自動確定要使用的命令()。 3 code.visualstudio.com > docs > reference > tasks-appendix 附錄 - 視覺工作室代碼 注意:某些任務選項由VS代碼擴展程序貢獻。 您可以使用任務。JSONIntellisense使用觸發建議找到完整的列表... ## Visual Studio Code tips and tricks # 參考來源 - [請問 tasks.json 要怎麼用? site:code.visualstudio.com](https://felo.ai/search/ccdXpZ3og78S9XHjW3NcgV?invite=dOLn1YloyaD3j)