2016-02-10 7 views
7

Secondo the documentation, è possibile lanciare un programma prima di debug:Utilizzando "preLaunchTasks" e Denominazione di un task in Visual Studio Codice

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.

non ho visto esempio di sintassi di un compito "di nome", ma lo schema documentation rivela una proprietà chiamata taskName. Ho provato a utilizzarlo per collegare il mio launch.json preLaunchTasks all'attività, ma non ha funzionato. Quando ho lanciato il mio programma, codice Visual Studio ha segnalato questo errore:

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

mio personalizzato "nome" compito sembrava qualcosa di simile:

{ 
    "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", 
} 

poi ho provato a cambiare il nome della proprietà da taskName ad appena name , based on this link. Anche questo non ha funzionato.

Intellisense non fornisce suggerimenti su come denominare un'attività.

Qualcuno sa come denominare in modo univoco un'attività nel file tasks.json? Qual è la sintassi? Qual è il nome della proprietà?

In definitiva, vorrei eseguire due o tre processi node.js prima dell'avvio della mia app node.js. Ad esempio, mi piacerebbe avere le seguenti tre applicazioni lanciate prima che la mia app è lanciato nel debugger:

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

Se sto lavorando su una macchina Windows, il mio compito potrebbe essere simile a questa:

{ 
    "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" 
     ] 
} 

L'attività sopra utilizzando il cmd start capability. Non sono ancora sicuro di come avviare diverse attività di nodo anziché uno, ma non riesco nemmeno a ottenere un compito da avviare a causa di questo problema di denominazione delle attività.

Come denominare un'attività nel file tasks.json?

risposta

12

Quindi, se è ancora attuale, o se qualcuno trova questa discussione con lo stesso problema, ho appena capito come funziona:

Nel tasks.json, devi creare una matrice 'tasks' - il suggerimento sul codice ti aiuterà con quello - che contiene una serie di oggetti. All'interno di un oggetto, è possibile avere la coppia chiave-valore "taskName".

Esempio:

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

Nel mio caso, ho dovuto eseguire il comando npm run-script webpack prima di eseguire il mio progetto. Nel file launch.json, lo "preLaunchTask": "runwebpack" funzionerà ora.

Nota: il suppressTaskName è vero nel mio esempio. Omettendolo o impostandolo su false, il codice VS verrà aggiunto dopo l'esecuzione del comando taskName.

Un approccio più generale sarebbe qualcosa di simile:

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

Con quest'ultimo esempio, è possibile estendere la matrice tasks con altri script da eseguire anche.

suggerimento per il mio utilizzo: NPM eseguire script recupera cosa fare dal scripts oggetto l'package.json del file.

Edit: questo funziona con VS codice 1.3.1

0

Ho visto solo il taskName utilizzato in relazione a Gulp; Sono sicuro che ce ne sono altri ma nulla di cui ho molte informazioni. Forse questo può farti iniziare con quello che hai già?

Run a pre-launch task in VSCODE

0

FWIW, sto usando VS Codice 1.20.1 ed ecco come ho ottenuto il mio preLaunchTask al lavoro:

In launch.json:

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

Nel mio package.json:

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