[visual-studio-code] VSCode에서 여러 작업 정의

VSCode에서 작업을 정의 할 수 있음을 확인했습니다. 그러나 tasks.json파일에 여러 작업을 정의하는 방법을 모르겠습니다 .



답변

누군가에게 도움이되는 경우를 대비하여 …. gulp / grunt / etc … 또는 작업 명령을 프록시하는 추가 쉘 스크립트가 없거나 필요하지 않은 경우 “npm run”이 이미 있습니다.

이것은 “Build and Test”, Shift+ Ctrl+ B, Shift+ Ctrl+ 에서와 같이 webpack 및 mocha 용입니다.T

.vscode / tasks.json :

{
  "name": "npmTask",
  //...
  "suppressTaskName": true,
  "command": "npm",
  "isShellCommand": true,
  "args": [
    "run"
  ],
  "tasks": [
    {
      //Build Task
      "taskName": "webpack",
      //Run On Shift+Ctrl+B
      "isBuildCommand": true,
      //Don't run when Shift+Ctrl+T
      "isTestCommand": false,
      // Show the output window if error any
      "showOutput": "silent",
      //Npm Task Name
      "args": [
        "webpack"
      ],
      // use 2 regex:
      // 1st the file, then the problem       
      "problemMatcher": {
        "owner": "webpack",
        "severity": "error",
        "fileLocation": "relative",
        "pattern": [
          {
            "regexp": "ERROR in (.*)",
            "file": 1
          },
          {
            "regexp": "\\((\\d+),(\\d+)\\):(.*)",
            "line": 1,
            "column": 2,
            "message": 3
          }
        ]
      }
    },
    {
      //Test Task   
      "taskName": "mocha",
      // Don't run on Shift+Ctrl+B
      "isBuildCommand": false,
      // Run on Shift+Ctrl+T
      "isTestCommand": true,
      "showOutput": "always",
      "args": [
        "mocha"
      ]
    }
  ]
}

package.json :

{
  ...
  "scripts": {
    "webpack": "webpack",
    "mocha": "/usr/bin/mocha"
  },
  ...
}


답변

내가 이것을 더 잘 이해하는 데 도움이 된 것은 명령에 전달되는 일련의 인수입니다. 일부 사람들에게는 분명 할 수 있지만 문서에서는 명확하지 않습니다.

전송되는 명령에만 초점을 맞추기 위해 일부 필드 생략 :

{ "command": "myCommand"
  "args": ["myCommandArguments"],
  "tasks" : [
    { "taskName": "myTask",
      "args": ["myTaskArguments"],
      "suppressTaskName": false,
    }
  ]
}

위의 정의는 다음 명령을 생성합니다.

myCommand myCommandArguments myTaskArguments myTask

작업 이름 myTask은 항상 마지막입니다. 버전 0.4부터 "suppressTaskName": true.


답변

이 시도

{
    "version": "0.1.0",
    "command": "cmd",
    "isShellCommand": true,
    "args": ["/C"],
    "tasks": [
        {
            "taskName": "install",
            "args": ["npm install"]
        },
        {
            "taskName": "build",
            "args": ["gulp build"],
            "isBuildCommand": true,
            "problemMatcher": "$gulp-tsc"
        }
    ]
}


답변

다음 tasks.json 파일을 사용하여 여러 TypeScript 빌드 시나리오를 실행합니다. 각 폴더에 tsconfig.json 파일을 넣어 각 폴더의 출력을 개별적으로 조정할 수 있습니다. 작업 이름은 명령 문자열에 넣으려고하므로 숨겨야합니다.

{
    "version": "0.1.0",
    "command": "tsc",
    "showOutput": "always",
    "isShellCommand": true,
    "args": [],
    "windows": {
        "command": "tsc",
        "showOutput": "always",
        "isShellCommand": true
    },
    "tasks": [
        {
            "taskName": "Build the examples",
            "suppressTaskName": true,
            "isBuildCommand": false,
            "args": ["-p", "./source/examples", "--outDir", "./script/examples"],
            "problemMatcher": "$tsc"
        },
        {
            "taskName": "Build the solution",
            "suppressTaskName": true,
            "isBuildCommand": false,
            "args": ["-p", "./source/solution", "--outDir", "./script/solution"],
            "problemMatcher": "$tsc"
        }
    ]
}

폴더 구조는 다음과 같습니다. 여기서 / script는 출력 루트이고 / source는 입력 루트입니다. 두 폴더 모두 / typingd 폴더 및 / typings 폴더의 형식 선언을 참조합니다. TypeScript는 외부 참조에서 상대 경로를 사용하는 것으로 다소 제한되므로 이러한 폴더 구조가 유사한 경우 작업을 단순화하는 데 도움이됩니다.

TypeScript 다중 빌드 폴더 구조

오 예, 비 빌드로 표시하고 빌드 키를 재정 의하여 목록에서 특정 작업을 선택하면 선택적으로 실행하는 것이 더 쉽습니다.

// Place your key bindings in this file to overwrite the defaults
[
    { "key": "ctrl+shift+b", "command": "workbench.action.tasks.runTask" }
]

업데이트 : 원하는 경우 언제든지 완전히 악성으로 이동할 수 있습니다. args를 처리하는 더 좋은 방법이있을 수 있지만 이것은 현재 OSX에서 작동합니다.

{
  "version": "0.1.0",
  "isShellCommand": true,
  "linux": { "command": "sh", "args": ["-c"] },
  "osx": { "command": "sh", "args": ["-c"] },
  "windows": { "command": "powershell", "args": ["-Command"] },
  "tasks": [
    {
      "taskName": "build-models",
      "args": ["gulp build-models"],
      "suppressTaskName": true,
      "isBuildCommand": false,
      "isTestCommand": false
    },
    {
      "taskName": "run tests",
      "args": ["mocha ${workspaceRoot}/test"],
      "suppressTaskName": true,
      "isBuildCommand": false,
      "isTestCommand": false
    }
  ]
}


답변

나는 이것에 대한 적절한 대답을 모르지만 (또한 알고 싶습니다) 누군가에게 도움이 될 경우를 대비 한 추악한 해결 방법입니다. 저는 Windows를 사용하고 있으며 간단히 다음을 포함 할 수있는 간단한 배치 스크립트를 작성했습니다.

"%1" "%2"

그런 다음 내 tasks.json은 다음과 같습니다.

{
    "version": "0.1.0",
    "command": "c:\\...\\mytasks.bat"
    "tasks" : [
        {
            "taskName": "myFirstTask",
            "args": "c:\\...\\task1.exe", "${file}"],
        },
        {
            "taskName": "mySecondTask",
            "args": "c:\\...\\task2.exe", "${file}"],
        },
    ]
}


답변

tasks 속성에 둘 이상의 작업을 나열 할 수 있습니다. 다음과 같은 것 :

"tasks": [
    {
        "taskName": "build",
        ...
    },
    {
         "taskName": "package",
         ...
    }
]


답변

이 기능은 Visual Studio Code v1.9 (2017 년 1 월) 에 추가되었습니다 . 예제와 텍스트는 릴리스 노트 에서 가져옵니다 .

{
  "version": "0.1.0",
  "tasks": [
    {
      "taskName": "tsc",
      "command": "tsc",
      "args": ["-w"],
      "isShellCommand": true,
      "isBackground": true,
      "problemMatcher": "$tsc-watch"
    },
    {
      "taskName": "build",
      "command": "gulp",
      "args": ["build"],
      "isShellCommand": true
    }
  ]
}

작업 당 명령

이제 작업마다 다른 명령을 정의 할 수 있습니다 ( # 981 ). 이를 통해 자체 쉘 스크립트를 작성하지 않고도 다른 작업에 대해 다른 명령을 실행할 수 있습니다. tasks.json작업 별 명령을 사용 하는 파일은 [위와 같습니다.]