2015-05-01 6 views
23

Questo è il mio task.jsoncercando di eseguire un compito sorso con VSCode che non si basa nella cartella principale

// A task runner configuration for gulp. Gulp provides a less task 
// which compiles less to css. 
{ 
    "version": "0.1.0", 
    "command": "gulp", 
    "isShellCommand": true, 
    "tasks": [ 
     { 
      "taskName": "sfdcBuild", 
      // Make this the default build command. 
      "isBuildCommand": true, 
      // Show the output window only if unrecognized errors occur. 
      "showOutput": "always", 
      // Use the standard less compilation problem matcher. 
      "problemMatcher": "$lessCompile" 
     } 
    ] 
} 

Purtroppo la mia installazione gulp (quello locale) non è in radice, ma all'interno di un'altra cartella:

root/js/ 

così come posso definire che vorrei eseguire questo comando gulp dall'interno della cartella?

PS: lo spostamento del task.json nella sottocartella non ha funzionato.

+0

Se hanno lo stesso problema con un comando 'make' in linux, dal momento che il Makefile è memorizzato in un altro luogo e' make -f DIR/Makefile' non funziona per altri motivi. Ho provato a scrivere uno script bash per passare alla directory e chiamare il comando da lì, ma in Linux qualcosa di strano è successo quando si esegue uno script all'interno di VSCode. – spraetor

risposta

34

Utilizzando una directory di lavoro diversa è in parte supportato. Non funziona per il rilevamento automatico delle attività di Gulp, ma dovrebbe funzionare per eseguire gulp. È possibile aggiungere qualcosa di simile alla tasks.json a livello di ambito superiore

"options": { 
    "cwd": "${workspaceRoot}/mySubDir" 
}, 

Tuttavia, questo presuppone ancora quel sorso e tutti i moduli nodo guld richiede sono accessibili da quella directory.

+0

Grazie! Questo funziona e risolve questo problema per me! –

+0

Ho fatto l'errore di usare inizialmente '$ {cwd}' invece di '$ {workspaceRoot}'. Dopo ore di debug perché ho continuato a ricevere l'errore "Dimensione massima dello stack superata", mi sono reso conto che non si trattava di un problema di gulp, ma di un problema di tasks.json. (dal momento che Cwd è stato impostato in modo ricorsivo) – Trent

+0

Qualcuno sa come eseguire il rilevamento automatico del codice VS durante l'esecuzione delle attività di gulp? – shkiper

1

Il tasks.json non supporta in questo momento l'avvio di un'attività con un diverso cwd. Un modo per aggirare il problema sarebbe quello di creare un file gulp.cmd o gulp.sh nella cartella radice dello spazio di lavoro che richiama lo gulp corretto. Per esempio. gulp.cmd:

@SETLOCAL 
@SET PATHEXT=%PATHEXT:;.JS;=;% 
node "%~dp0\node_modules\gulp\bin\gulp.js" %* 

per evitare di commettere questo alla vostra repository git, si poteva ignorarlo in .git/info/exclude

1

è possibile passare il percorso della vostra gulpfile.js di inghiottire in args

"version": "0.1.0", 
"command": "gulp", 
"isShellCommand": true, 
"args": [ 
    "--gulpfile", 
    "./js/gulpfile.js" 
]