web-dev-qa-db-fra.com

Comment chaîner des tâches dans Visual Studio Code en utilisant seulement tasks.json?

J'ai parcouru la documentation de Code Visual Studio pour savoir comment ajouter plusieurs tâches consécutives au fichier tasks.json.

Le tableau tasks permet uniquement de créer différents arguments pour la même commande. Dans cet exemple, la commande est 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 permet-il l'exécution simultanée de plusieurs tâches? Par exemple, tsc suivi de uglify?

11
Kokodoko

La fonctionnalité dependsOn a été fournie dans version 1.10.0 . Par exemple, je l’utilise pour compiler et exécuter des scripts de fichier unique dans 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": []
        }
    ]
}
14
Ben Creasy

Voici un exemple de travail qui exécute la version tcs et copie le source dans un autre dossier à l’aide d’un script Shell. Ceci est basé sur diverses publications sur StackOverflow et sur la documentation trouvée ici:

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

On pourrait aussi faire un tasks.json avec deux tâches, la seconde ayant une dépendance sur la première, comme le montre Ben Creasy post, les deux tâches seraient exécutées à l’appel de la seconde. Je devais être capable d'exécuter l'un, l'autre ou les deux. Un grand merci à Ben, j’ai eu du mal à trouver une solution avant de publier ce message.

En passant, lors de l’inclusion d’un fichier Shell, les commandes sont exécutées en référence au dossier du projet, et non à celui dans lequel se trouve le script.

{
 // 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": []
  }
 ]
}
0
pasx