欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

VScode任務(wù)配置(task.json與launch.json)及異常詳解

 更新時(shí)間:2025年05月08日 11:42:35   作者:trayvontang  
這篇文章主要介紹了VScode任務(wù)配置(task.json與launch.json)及異常的相關(guān)資料,tasks.json用于配置自動(dòng)化任務(wù),如編譯、構(gòu)建、執(zhí)行腳本等,而launch.json用于配置調(diào)試器,需要的朋友可以參考下

簡(jiǎn)介

vscode非常強(qiáng)大,有很多可以自定義的東西,但是也不容易上手,例如搭建一個(gè)新環(huán)境是如何配置運(yùn)行程序。

本篇文章就將詳細(xì)說(shuō)明vscode的如何配置任務(wù)來(lái)完成編譯等操作,如何配置launch來(lái)debug。

  • tasks.json:配置和管理自動(dòng)化任務(wù),如編譯、構(gòu)建、運(yùn)行腳本…
  • launch.json:配置調(diào)試器,定義調(diào)試會(huì)話的啟動(dòng)和運(yùn)行參數(shù)

task

可以配置功能

  • 編譯代碼:用javac、gcc、tsc編譯工具編譯代碼
  • 執(zhí)行腳本:執(zhí)行shell、Python、bat腳本
  • 構(gòu)建項(xiàng)目:用Maven、Make、Gradle等構(gòu)建工具構(gòu)建腳本
  • 其他任務(wù):清理生成文件、打包、上傳…

task配置的是命令,所以它可以非常靈活,可以看作是一個(gè)執(zhí)行腳本的快捷方式。

參數(shù)說(shuō)明

參數(shù)說(shuō)明
label任務(wù)名稱,標(biāo)識(shí),以便于執(zhí)行的時(shí)候知道是哪一個(gè)任務(wù)
type任務(wù)類型,shell、process、typescript,shell通常是腳本如python、bat、各種命令,process作為獨(dú)立的進(jìn)程運(yùn)行
command執(zhí)行的命令,gcc、javac、python、ps、echo等命令
args命令的參數(shù),數(shù)組
group任務(wù)分組,build(構(gòu)建)、test(測(cè)試)
presentation控制任務(wù)輸出的呈現(xiàn)方式,例如是否顯示在終端中,是否清除之前的輸出等
problemMatcher配置錯(cuò)誤和警告的匹配器,用于從任務(wù)輸出中解析錯(cuò)誤和警告,vscode內(nèi)置g c c 、 gcc、gcc、eslint
options任務(wù)執(zhí)行的選項(xiàng),環(huán)境變量、當(dāng)前工作目錄等
dependsOn任務(wù)依賴,數(shù)組[“task-a”,“task-c”] 任務(wù)運(yùn)行前先執(zhí)行依賴任務(wù)
dependsOrder依賴執(zhí)行順序,sequence按照"dependsOn任務(wù)列表順序執(zhí)行
shell配置執(zhí)行shell終端,cmd、git,如在Windows下不能執(zhí)行shell腳本,可以配置git來(lái)執(zhí)行

type的一個(gè)作用就可以根據(jù)文件匹配,例如在ts文件中按F5進(jìn)行debug,vscode就知道去找type支持ts的task,例如typescript。

默認(rèn)會(huì)去找group配置為kind為build,isDefault為true的task,如果有多個(gè),就會(huì)讓手動(dòng)選擇。

presentation參數(shù):

  • echo: 是否輸出執(zhí)行的command,默認(rèn)ture
  • reveal: 輸出面板控制,never、silent、always, 是否在用戶界面顯示輸出,默認(rèn)always
  • focus:顯示任務(wù)輸出的面板是否處于焦點(diǎn)狀態(tài),默認(rèn)false
  • panel: 面板控制,shared默認(rèn),共享; dedicated專用;new每次任務(wù)創(chuàng)建新面板
  • “showReuseMessage”: true-顯示重用消息
  • “clear”: false-不清除之前的輸出

task外部程序示例

task中也可以單獨(dú)指定執(zhí)行shell的終端

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "task-測(cè)試shell",
            "type": "shell",
            "group": {
                "kind": "build",
                "isDefault": true,
            },
            "command": "ls",
            "args": [
                "-al"
            ],
            "options": {
                "cwd": "${workspaceFolder}",
                "shell": {
                    "executable": "E:\\tool\\Git\\bin\\bash.exe",
                    "args": [
                        "-c"
                    ]
                }
            }
        }
    ]
}

前面介紹了task可以通過(guò)F5調(diào)試的方式匹配執(zhí)行。

還可以Ctrl+F8手動(dòng)執(zhí)行。

還可以在Terminal菜單選擇Run Task來(lái)執(zhí)行。

task輸入?yún)?shù)示例

task也可以交互輸入?yún)?shù),又2中方式:

  • 一種是配置選項(xiàng),運(yùn)行是下拉選擇pickString
  • 一種是手動(dòng)輸入,promptString

pickString參數(shù):

  • description:變量說(shuō)明
  • options:可選項(xiàng)數(shù)組
  • default:默認(rèn)值。它必須在options中

promptString參數(shù):

  • description:變量說(shuō)明
  • default:默認(rèn)值
  • password:是否是密碼,如果是輸入用*代替

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "task-測(cè)試變量輸入",
            "type": "shell",
            "windows": { //windows下執(zhí)行操作
                "command": "echo",
                "args": [
                    "下拉參數(shù):${input:manual_pick}",
                    "輸入?yún)?shù):${input:manual_input}"
                ]
            },
            "group": {
                "kind": "build",
                "isDefault": true,
            },
        }
    ],
    "inputs": [
        {
            "id": "manual_pick",
            "type": "pickString", //"輸入?yún)?shù)類型: 挑選預(yù)設(shè)的選項(xiàng)",
            "default": "選項(xiàng)B",
            "options": [
                "選項(xiàng)A",
                "選項(xiàng)B",
                "選項(xiàng)C",
                "選項(xiàng)D"
            ],
            "description": "task輸入?yún)?shù)預(yù)設(shè),執(zhí)行時(shí)下拉選擇",
        },
        {
            "id": "manual_input",
            "type": "promptString", // 輸入?yún)?shù)類型: 直接輸入的字符串
            "password": false, // 如果是true,表示密碼用*表示
            "default": "你干嘛啊!", // 默認(rèn)字符串
            "description": "task參數(shù)手動(dòng)輸入",
        },
    ],
}

task內(nèi)置參數(shù)示例

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "task-測(cè)試vscode內(nèi)置變量",
            "type": "shell",
            "command": "print.sh",
            "args": [
                "workspaceFolder=${workspaceFolder}",
                "workspaceFolderBasename=${workspaceFolderBasename}",
                "file=${file}",
                "fileWorkspaceFolder=${fileWorkspaceFolder}",
                "relativeFile=${relativeFile}",
                "relativeFileDirname=${relativeFileDirname}",
                "fileBasename=${fileBasename}",
                "fileBasenameNoExtension=${fileBasenameNoExtension}",
                "fileExtname=${fileExtname}",
                "fileDirname=${fileDirname}",
                "fileDirnameBasename=${fileDirnameBasename}"
            ],
            "options": {
                "shell": {
                    "executable": "E:\\tool\\Git\\bin\\sh.exe",
                    "args": [
                        "-i"
                    ]
                }
            },
            "presentation": {
                "echo": true, // 顯示命令  
                "reveal": "always", // 顯示輸出面板  
                "focus": false, // 不自動(dòng)聚焦輸出面板  
                "panel": "new", // 共享輸出面板  
                "showReuseMessage": true, // 顯示重用消息  
                "clear": false // 不清除之前的輸出  
            },
            "group": {
                "kind": "build",
                "isDefault": true,
            },
        }
    ]
}
for arg in "$@"; do
  echo "$arg"
done

更多參數(shù)說(shuō)明請(qǐng)查看官方文檔

任務(wù)依賴關(guān)系

我們把前面整合起來(lái),來(lái)看一下任務(wù)的依賴設(shè)置:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "task-運(yùn)行腳本",
            "type": "shell",
            "options": {
                "cwd": "${workspaceFolder}",
            },
            "windows": {
                "command": "base.bat",
                "args": [
                    "參數(shù)1",
                    "參數(shù)2"
                ],
            },
            "group": {
                "kind": "build",
                "isDefault": true,
            },
            "dependsOrder": "sequence",
            "dependsOn": [
                "task-測(cè)試變量輸入",
                "task-測(cè)試shell",
                "task-測(cè)試vscode內(nèi)置變量"
            ]
        },
        {
            "label": "task-測(cè)試變量輸入",
            "type": "shell",
            "group": "build",
            "windows": { //windows下執(zhí)行操作
                "command": "echo",
                "args": [
                    "下拉參數(shù):${input:manual_pick}",
                    "輸入?yún)?shù):${input:manual_input}"
                ]
            }
        },
        {
            "label": "task-測(cè)試shell",
            "type": "shell",
            "group": "build",
            "command": "ls",
            "args": [
                "-al"
            ],
            "options": {
                "cwd": "${workspaceFolder}",
                "shell": {
                    "executable": "E:\\tool\\Git\\bin\\bash.exe",
                    "args": [
                        "-c"
                    ]
                }
            }
        },
        {
            "label": "task-測(cè)試vscode內(nèi)置變量",
            "type": "shell",
            "command": "print.sh",
            "args": [
                "workspaceFolder=${workspaceFolder}",
                "workspaceFolderBasename=${workspaceFolderBasename}",
                "file=${file}",
                "fileWorkspaceFolder=${fileWorkspaceFolder}",
                "relativeFile=${relativeFile}",
                "relativeFileDirname=${relativeFileDirname}",
                "fileBasename=${fileBasename}",
                "fileBasenameNoExtension=${fileBasenameNoExtension}",
                "fileExtname=${fileExtname}",
                "fileDirname=${fileDirname}",
                "fileDirnameBasename=${fileDirnameBasename}"
            ],
            "options": {
                "shell": {
                    "executable": "E:\\tool\\Git\\bin\\sh.exe",
                    "args": [
                        "-i"
                    ]
                }
            }
        }
    ],
    "inputs": [
        {
            "id": "manual_pick",
            "type": "pickString", //"輸入?yún)?shù)類型: 挑選預(yù)設(shè)的選項(xiàng)",
            "default": "選項(xiàng)B",
            "options": [
                "選項(xiàng)A",
                "選項(xiàng)B",
                "選項(xiàng)C",
                "選項(xiàng)D"
            ],
            "description": "task輸入?yún)?shù)預(yù)設(shè),執(zhí)行時(shí)下拉選擇",
        },
        {
            "id": "manual_input",
            "type": "promptString", // 輸入?yún)?shù)類型: 直接輸入的字符串
            "password": false, // 如果是true,表示密碼用*表示
            "default": "你干嘛啊!", // 默認(rèn)字符串
            "description": "task參數(shù)手動(dòng)輸入",
        },
    ],
}
@echo off
echo "打印所有命令行參數(shù)"
for %%i in (%*) do (
    echo %%i
)

launch

launch用來(lái)配置debug,常用參數(shù):

  • name: 配置名稱,便于區(qū)分就可以
  • type: 調(diào)試器類型,python、cppdbg、node、java
  • request: 調(diào)試請(qǐng)求類型,launch、attach
  • program: 要調(diào)試的程序路徑或文件
  • args: 傳遞給程序的命令行參數(shù),數(shù)組形式
  • cwd: 當(dāng)前工作目錄
  • env: 環(huán)境變量設(shè)置
  • sourceMaps: 是否啟用源映射(JavaScript、TypeScript)
  • preLaunchTask: 調(diào)試前要執(zhí)行的任務(wù),通常是編譯任務(wù)
  • postDebugTask: 調(diào)試結(jié)束后要執(zhí)行的任務(wù)
  • stopOnEntry: 是否在程序入口處停止。
  • console: 控制臺(tái)類型integratedTerminal、externalTerminal、internalConsole
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "debug-Go程序", // 名稱可以在debug面板中看到區(qū)分
            "type": "go", // 定義調(diào)試器的類型
            "request": "launch", 
            "program": "${file}", // 待調(diào)試的可執(zhí)行程序的路徑
            "args": [], // 設(shè)置可執(zhí)行程序所需要的參數(shù)
            "stopAtEntry": false, // 程序不會(huì)再入口點(diǎn)處停止(即main函數(shù)),從頭運(yùn)行到結(jié)束或設(shè)置的斷點(diǎn)處
            "cwd": "${workspaceFolder}", // 設(shè)置當(dāng)前的工作目錄
            "environment": [], // 設(shè)置調(diào)試的環(huán)境變量
            "externalConsole": false, // 不使用外部控制臺(tái),調(diào)試輸出將顯示在內(nèi)置的調(diào)試控制臺(tái)中
            "preLaunchTask": "go-build" // tasks.json創(chuàng)建的任務(wù)中的label匹配
        } 
    ]
}

配置TyepScript的task和launch

首先我們來(lái)看一下完整的目錄結(jié)構(gòu):

task.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "編譯TS項(xiàng)目",
            "type": "typescript",
            "tsconfig": "tsconfig.json",
            "problemMatcher": [
                "$tsc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

注意type是typescript,特殊的,可以指定任務(wù)配置文件

tsconfig.json

這個(gè)是typescript的配置文件。

{
    "compilerOptions": {
        "target": "ES2016",
        "module": "CommonJS",
        "outDir": "dist",
        "sourceMap": true
    }
}

outDir是編譯之后的JS文件目錄。

launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "調(diào)試當(dāng)前TS",
            "type": "node",
            "request": "launch",
            "skipFiles": [
                "<node_internals>/**"
            ],
            "program": "${file}",
            "preLaunchTask": "編譯TS項(xiàng)目",
            "outFiles": [
                "${workspaceFolder}/dist/**/*.js"
            ]
        }
    ]
}

type是node,program要執(zhí)行的文件,這里配置的是當(dāng)前文件,可以配置為固定路徑的入口文件。

outFiles配置的是編譯之后的JS文件,就是要執(zhí)行的文件,如果不配或者找不到,執(zhí)行的是program的ts文件,有問(wèn)題,所以一定要檢查是否正確。

Debug

我們可以在debug中看到launch的name,終端中的task tab中看到task的label。

代碼文件

入口文件main.ts

// import tarray = require("./ts-array");
// import amap = require('./ts-map');
import { getArray } from "./ts-array";
import * as amap from "./ts-map";

// let array: string[] = tarray.getArray();
let array: string[] = getArray();
array.forEach(function (value) {
    console.log(value);
})

amap.testMapIter();
amap.testMapBaseFun();

測(cè)試文件:

export {getArray}

function getArray(): string[] {
    return new Array("Java", "Go", "C++", "Rust", "Python", "C", "PHP", "SQL", "TypeScript");
  }
  
  function testArrayBase() {
    let array: string[];
    array = getArray();
    console.log(array[0]);
    console.log(array[1]);
  
    let nums: number[] = [1, 2, 3, 4]
    console.log(nums[0]);
    console.log(nums[1]);
    console.log(nums[2]);
    console.log(nums[3]);
  }
  
  function testArrayLength() {
    let nums = new Array(4);
    for (let i = 0; i < nums.length; i++) {
      nums[i] = i * 2;
  
    }
  
    for (let i in nums) {
      console.log(nums[i]);
    }
  
    var language = getArray();
    for (var i = 0; i < language.length; i++) {
      console.log(language[i]);
    }
  }
  
  testArrayBase();
  testArrayLength();
export {testMapBaseFun,testMapIter}

function testMapIter() {
    let map = new Map();
  
    map.set("Java", 1);
    map.set("C++", 2);
    map.set("Go", 3);
  
    // 迭代 Map 中的 key
    for (let key of map.keys()) {
      console.log(key);
    }
  
    // 迭代 Map 中的 value
    for (let value of map.values()) {
      console.log(value);
    }
  
    // 迭代 Map 中的 key => value
    for (let entry of map.entries()) {
      console.log(entry[0], entry[1]);
    }
  
    // 使用對(duì)象解析
    for (let [key, value] of map) {
      console.log(key, value);
    }
  }
  
  function testMapBaseFun() {
    let map = new Map();
  
    map.set("Java", 1);
    map.set("C++", 2);
    map.set("Go", 3);
  
    // 獲取鍵對(duì)應(yīng)的值
    console.log(map.get("Go"));
  
    // 判斷 Map 中是否包含鍵對(duì)應(yīng)的值
    console.log(map.has("Python"));
    console.log(map.has("Java"));
  
    // 返回 Map 對(duì)象鍵/值對(duì)的數(shù)量
    console.log(map.size);
  
    // 刪除元素,刪除成功返回true
    console.log(map.delete("Go"));
    console.log(map);
    // 移除 Map 對(duì)象的所有鍵/值對(duì)
    map.clear();
    console.log(map);
  }
  
  testMapIter();
  testMapBaseFun();

更多配置可以參考官網(wǎng)

異常情況

powershell不能用的情況:

Executing task: tsc -p d:\project\front\ts\tsconfig.json 

tsc : 無(wú)法加載文件 E:\language\nodejs16\node_global\tsc.ps1,因?yàn)樵诖讼到y(tǒng)上禁止運(yùn)行腳本。
有關(guān)詳細(xì)信息,請(qǐng)參閱 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 1
+ tsc -p d:\project\front\ts\tsconfig.json
+ ~~~
    + CategoryInfo          : SecurityError: (:) [],PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

The terminal process "C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe -Command tsc -p d:\project\front\ts\tsconfig.json" terminated with exit code: 1. 
Terminal will be reused by tasks, press any key to close it. 

我們?cè)?a href="/program/341102kb6.htm" target="_blank">vscode終端不能打開(kāi)中已經(jīng)有過(guò)一點(diǎn)介紹。

我們知道默認(rèn)使用的終端也是settings.json中配置:

"terminal.integrated.defaultProfile.windows": "Command Prompt"

總結(jié) 

到此這篇關(guān)于VScode任務(wù)配置(task.json與launch.json)及異常的文章就介紹到這了,更多相關(guān)VScode任務(wù)配置task.json與launch.json內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解window啟動(dòng)webpack打包的三種方法

    詳解window啟動(dòng)webpack打包的三種方法

    這篇文章主要介紹了window啟動(dòng)webpack打包的三種方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 淺談音視頻 pts dts基本概念及理解

    淺談音視頻 pts dts基本概念及理解

    本文主要介紹了音視頻 pts dts基本概念及理解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • git版本回退_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    git版本回退_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Git的版本回退速度非常快,因?yàn)镚it在內(nèi)部有個(gè)指向當(dāng)前版本的HEAD指針。接下來(lái)通過(guò)本文給大家分享git版本回退問(wèn)題,感興趣的朋友一起看看吧
    2017-08-08
  • 配置Git并從GitHub上克隆項(xiàng)目

    配置Git并從GitHub上克隆項(xiàng)目

    這篇文章介紹了配置Git并從GitHub上克隆項(xiàng)目的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • UTC時(shí)間、GMT時(shí)間、本地時(shí)間、Unix時(shí)間戳的具體使用

    UTC時(shí)間、GMT時(shí)間、本地時(shí)間、Unix時(shí)間戳的具體使用

    本文主要介紹了UTC時(shí)間、GMT時(shí)間、本地時(shí)間、Unix時(shí)間戳的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 玩轉(zhuǎn)markdown 分享幾個(gè)需要用到的工具

    玩轉(zhuǎn)markdown 分享幾個(gè)需要用到的工具

    markdown是一個(gè)面向?qū)懽鞯恼Z(yǔ)法引擎,markdown的最終目的都是解析成html用于網(wǎng)頁(yè)瀏覽,所以它兼容html語(yǔ)法,即你可以在 markdown文檔中使用原生的html標(biāo)簽
    2016-08-08
  • K8ssandra入門教程之Linux上部署K8ssandra到Kubernetes的過(guò)程

    K8ssandra入門教程之Linux上部署K8ssandra到Kubernetes的過(guò)程

    K8ssandra不僅幫助我們可以快速可靠地在Kubernetes上部署Cassandra,同時(shí)提供了許多組件,如監(jiān)控、備份、同步、訪問(wèn)等,這篇文章給大家介紹K8ssandra入門教程之Linux上部署K8ssandra到Kubernetes的過(guò)程,一起看看吧
    2021-10-10
  • git工作區(qū)暫存區(qū)與版本庫(kù)基本理解及提交流程全解

    git工作區(qū)暫存區(qū)與版本庫(kù)基本理解及提交流程全解

    這篇文章主要為大家介紹了git工作區(qū)暫存區(qū)與版本庫(kù)基本理解及提交流程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-04-04
  • 人工智能(AI)首選Python的原因解析

    人工智能(AI)首選Python的原因解析

    Python雖然是腳本語(yǔ)言,但是因?yàn)槿菀讓W(xué),迅速成為科學(xué)家的工具。Python 已經(jīng)是數(shù)據(jù)分析和 AI的第一語(yǔ)言,網(wǎng)絡(luò)攻防的第一黑客語(yǔ)言,正在成為編程入門教學(xué)的第一語(yǔ)言,云計(jì)算系統(tǒng)管理第一語(yǔ)言
    2019-06-06
  • DedeCMS 5.7 sp1遠(yuǎn)程文件包含漏洞(CVE-2015-4553)

    DedeCMS 5.7 sp1遠(yuǎn)程文件包含漏洞(CVE-2015-4553)

    這篇文章主要介紹了DedeCMS 5.7 sp1遠(yuǎn)程文件包含漏洞(CVE-2015-4553)的相關(guān)知識(shí),本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08

最新評(píng)論