Как связать задачи в Visual Studio Code, используя только tasks.json?

Я изучал документацию Visual Studio Code, чтобы выяснить, как добавить несколько последовательных задачи в tasks.json файл.

Массив tasks позволяет создавать разные аргументы только для одной и той же команды. В этом примере команда echo.

{
    "version": "0.1.0",
    "command": "echo",
    "isShellCommand": true,
    "args": [],
    "showOutput": "always",
    "echoCommand": true,
    "suppressTaskName": true,
    "tasks": [
        {
            "taskName": "hello",
            "args": ["Hello World"]
        },
        {
            "taskName": "bye",
            "args": ["Good Bye"]
        }
    ]
}

Позволяет ли tasks.json выполнять несколько задач последовательно? Например, за tsc следует uglify?


person Kokodoko    schedule 27.04.2017    source источник
comment
В последней версии VS Code я больше не использую task.json. Вы можете поместить свои команды под тегом scripts в package.json. Если вам нужны только две или три последовательные команды, вы можете использовать теги pre и post. Если ваш процесс сборки становится более сложным, вы можете использовать gulp или webpack.   -  person Kokodoko    schedule 13.08.2017


Ответы (2)


Функция dependsOn поставлялась в версии 1.10.0. Например, я использую это для компиляции и запуска однофайловых скриптов в TypeScript:

{
    "version": "2.0.0",
    "tasks": [
        {
            "command": "tsc -p ${cwd}/2017-play",
            "label": "tsc-compile",
            "type": "shell"
        },
        {
            "command": "node ${cwd}/2017-play/build/${fileBasenameNoExtension}.js",
            "label": "node-exec",
            "type": "shell",
            "dependsOn": [
                "tsc-compile"
            ],
            "problemMatcher": []
        }
    ]
}
person Ben Creasy    schedule 04.09.2017
comment
Это огромное улучшение! Но я все еще думаю, что в документации MS невероятно неясно, как использовать tasks.json. К этому моменту я сдался и просто использую npm scripts или webpack - person Kokodoko; 07.09.2017

Вот рабочий пример, который запускает сборку tcs и копирует исходный код в другую папку с помощью сценария оболочки. Это основано на различных сообщениях на StackOverflow и документации, найденной здесь:

https://code.visualstudio.com/updates/v1_10#_more-work-on-terminal-runner

Можно также создать tasks.json с двумя задачами, причем вторая имеет зависимость от первой, как показано в сообщении Бена Кризи, две задачи будут выполняться при вызове второй. Мне нужно было выполнить одно, другое или и то, и другое. Большое спасибо Бену, мне было трудно найти решение, прежде чем я попал в этот пост.

Кстати, при включении файла оболочки команды запускаются со ссылкой на папку проекта, а не на ту, где находится скрипт.

{
 // See https://go.microsoft.com/fwlink/?LinkId=733558
 // for the documentation about the tasks.json format
 "version": "2.0.0",
 "tasks": [
  {
   "type": "typescript",
   "tsconfig": "tsconfig.json",
   "problemMatcher": [
    "$tsc"
   ],
   "group": "build",
   "identifier": "build"
  },
  {
   "label": "Copy files",
   "type": "shell",
   "command": "./scripts/copysrc.sh",
   "windows": {
    "command": ".\\scripts\\copysrc.cmd"
   },
   "group": "build",
   "presentation": {
    "reveal": "always"
   },
   "problemMatcher": [],
   "dependsOn": "build"
  },
  {
   "label": "Build and copy",
   "dependsOn": [
    "build",
    "Copy files"
   ],
   "group": "build",
   "problemMatcher": []
  }
 ]
}
person pasx    schedule 08.05.2018