2016-02-10 6 views
7

Nach the documentation ist es möglich, ein Programm, bevor das Debuggen zu starten:Mit „preLaunchTasks“ und eine Aufgabe in Visual Studio-Code Naming

To launch a task before the start of each debug session, set the preLaunchTask to the name of one of the tasks specified in tasks.json.

ich nicht Beispiel Syntax einer „namens“ Aufgabe gesehen habe, aber die schema documentation offenbart eine Eigenschaft namens . Ich versuchte das zu verwenden, um meine launch.json preLaunchTasks mit der Aufgabe zu verbinden, aber es hat nicht funktioniert. Wenn ich mein Programm ins Leben gerufen, berichtet Visual Studio-Code diesen Fehler:

Could not find a unique task 'launch-core'. Make sure the task exists and that it has a unique name.

My custom "namens" sah Aufgabe etwas wie folgt aus:

{ 
    "taskName": "launch-core", 
    "version": "0.1.0", 
    "command": "C:\\utils\\mystuff.exe", 
    // The command is a shell script 
    "isShellCommand": true, 
    // Show the output window only if unrecognized errors occur. 
    "showOutput": "silent", 
} 

Ich habe dann versucht von taskName den Eigenschaftsnamen zu ändern, um nur name , based on this link. Das hat auch nicht funktioniert.

Intellisense gibt keine Vorschläge zum Benennen einer Aufgabe.

Kann jemand eine Aufgabe in der Datei tasks.json eindeutig benennen? Was ist die Syntax? Was ist der Name der Eigenschaft?

Schließlich möchte ich zwei oder drei node.js Prozesse ausführen, bevor meine eigene node.js App gestartet wird. Zum Beispiel, würde Ich mag die folgenden drei Anwendungen ins Leben gerufen haben, bevor meine App in den Debugger gestartet wird:

sh -c 'cd ./manager/ && node manager.js' 
sh -c 'cd ./adapter/ && node adapter.js' 
sh -c 'cd ./core/ && node core.js' 

Wenn ich auf einem Windows-Box gerade arbeite, könnte meine Aufgabe wie folgt aussehen:

{ 
    "taskName": "core-launch", 
    "version": "0.1.0", 

    // The command is tsc. Assumes that tsc has been installed using npm install -g typescript 
    "command": "start", 

    // The command is a shell script 
    "isShellCommand": true, 

    // Show the output window only if unrecognized errors occur. 
    "showOutput": "silent", 

    // args is the HelloWorld program to compile. 
    "args": [ 
     "ACD-Manager", 
     "/B", 
     "/D", 
     "./manager/", 
     "node", 
     "manager.js" 
     ] 
} 

Die obige Aufgabe unter Verwendung der cmd start capability. Ich bin mir noch nicht sicher, wie man mehrere Knoten-Tasks starten kann, anstatt einen zu starten, aber ich kann nicht einmal eine Task zum Starten starten, weil dieses Task-Benennungsproblem vorliegt.

Wie benenne ich eine Aufgabe in der Datei tasks.json?

Antwort

12

Also, wenn es immer noch relevant ist, oder wenn jemand diesen Thread mit dem gleichen Problem findet, habe ich dachte, es einfach heraus, wie es funktioniert:

Im tasks.json, Sie müssen ein 'Aufgaben' Array erstellen - Code-Hinweis wird Ihnen dabei helfen - die ein Array von Objekten enthält. Innerhalb eines Objekts können Sie das 'taskname' Schlüssel-Wert-Paar haben.

Beispiel:

{ 
    "version": "0.1.0", 
    "command": "npm", 
    "isShellCommand": true, 
    "args": ["run-script", "webpack"], 
    "showOutput": "always", 
    "tasks": [ 
     { 
      "taskName": "runwebpack", 
      "suppressTaskName": true 
     } 
    ] 
} 

In meinem Fall hatte ich vor dem Ausführen von meinem Projekt des npm run-script webpack Befehl auszuführen. In der Datei launch.json funktioniert die "preLaunchTask": "runwebpack" jetzt.

Hinweis: die suppressTaskName ist in meinem Beispiel wahr. Wenn Sie es weglassen oder auf false setzen, wird VS Code die nach dem Befehl anhängen.

Ein allgemeinerer Ansatz wäre so etwas wie dieses:

{ 
    "version": "0.1.0", 
    "command": "npm", 
    "isShellCommand": true, 
    "args": ["run-script"], 
    "showOutput": "always", 
    "tasks": [ 
     { "taskName": "webpack" } 
    ] 
} 

Mit dem letzteren Beispiel Sie das tasks Array mit anderen Skripten erweitern kann auch ausgeführt werden.

Hinweis für meine Nutzung: NPM run-Skript, was aus der package.json Datei scripts Objekt tun abruft.

Edit: das funktioniert mit VS-Code 1.3.1

0

Ich habe nur wirklich den taskName in Verbindung mit Gulp gesehen; Ich bin mir sicher, dass es andere gibt, aber nichts, auf das ich viel Einsicht habe. Vielleicht kann dich das mit dem beginnen, was du schon hast?

Run a pre-launch task in VSCODE

0

FWIW, ich bin mit VS-Code 1.20.1 und hier ist, wie habe ich meine preLaunchTask arbeiten:

In launch.json:

{ 
    "version": "0.2.0", 
    "configurations": [ 
    { 
     "type": "node", 
     "request": "launch", 
     ... 
     "preLaunchTask": "npm: build", 
    } 
    ] 
} 

In meinem package.json:

{ 
    ... 
    "scripts": { 
    "build": "tsc" 
    ... 
    } 
}