Panoramica dei Task e Integrazione con Strumenti Esterni
Introduzione
Visual Studio Code (VS Code) supporta l'integrazione con strumenti esterni per automatizzare attività come linting, build, packaging, testing e deploying. Questi strumenti, eseguiti generalmente dalla riga di comando, possono essere lanciati direttamente da VS Code tramite l'uso dei task, configurati nel file tasks.json
. Questa guida spiega come definire e gestire i task in VS Code e come integrare e personalizzare strumenti esterni per migliorare i flussi di lavoro di sviluppo.
Task in VS Code
I task in VS Code consentono agli sviluppatori di eseguire script e processi direttamente dall'editor. Sono definiti in un file tasks.json
specifico per il workspace, situato nella cartella .vscode
. I task sono progettati principalmente per eseguire operazioni ripetitive e automatizzate, riducendo la necessità di passare continuamente dall'editor al terminale.
Esempio: Task Hello World in TypeScript
Crea una nuova cartella, inizializza un progetto TypeScript e crea un semplice task per compilare un file TypeScript.
bashmkdir mytask cd mytask tsc --init code .
Crea un file
HelloWorld.ts
con il seguente contenuto:typescriptfunction sayHello(name: string): void { console.log(`Hello ${name}!`); } sayHello('Dave');
Definisci il task per la build TypeScript nel file
tasks.json
:json{ "version": "2.0.0", "tasks": [ { "type": "typescript", "tsconfig": "tsconfig.json", "problemMatcher": ["$tsc"], "group": { "kind": "build", "isDefault": true } } ] }
Auto-rilevamento dei Task
VS Code rileva automaticamente i task per sistemi come Gulp, Grunt, Jake e npm. Per gli utenti di Node.js, il file package.json
può descrivere le dipendenze e gli script da eseguire come task. Questi possono essere configurati tramite il comando "Run Tasks" dal menu globale.
Esempio: Task NPM ESLint
Esegui l'installazione dei moduli npm necessari:
bashnpm install
Esegui il task npm per la linting:
bashnpm run lint
Configura il file
tasks.json
per rilevare automaticamente i problemi tramite ESLint:json{ "version": "2.0.0", "tasks": [ { "type": "npm", "script": "lint", "problemMatcher": ["$eslint-stylish"] } ] }
Task Personalizzati
Non tutti i task possono essere rilevati automaticamente. Puoi creare task personalizzati nel file tasks.json
. Ad esempio, se hai uno script per eseguire i test, puoi definirlo come segue
{
"label": "Run tests",
"type": "shell",
"command": "./scripts/test.sh",
"windows": {
"command": ".\\scripts\\test.cmd"
},
"group": "test",
"presentation": {
"reveal": "always",
"panel": "new"
}
}
Proprietà dei Task
Le proprietà di un task includono:
- label: Etichetta visibile nell'interfaccia utente.
- type: Tipo di task (ad esempio,
shell
oprocess
). - command: Il comando da eseguire.
- group: Gruppo di task (ad esempio,
build
otest
). - presentation: Configura come l'output viene gestito nel terminale integrato.
Esempio di un Task Composto
Puoi combinare più task usando la proprietà dependsOn
per eseguire task in parallelo o in sequenza:
{
"version": "2.0.0",
"tasks": [
{
"label": "Client Build",
"command": "gulp",
"args": ["build"],
"options": {
"cwd": "${workspaceFolder}/client"
}
},
{
"label": "Server Build",
"command": "gulp",
"args": ["build"],
"options": {
"cwd": "${workspaceFolder}/server"
}
},
{
"label": "Build",
"dependsOn": ["Client Build", "Server Build"]
}
]
}
Problem Matchers
I problem matcher elaborano l'output di un task per rilevare errori o avvisi. VS Code include diversi problem matcher predefiniti per strumenti come TypeScript, ESLint e Go. È possibile anche definire problem matcher personalizzati utilizzando espressioni regolari.
Esempio di un matcher per TypeScript:
{
"owner": "typescript",
"fileLocation": ["relative", "${workspaceFolder}"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
Conclusione
I task di Visual Studio Code offrono un potente modo per integrare strumenti esterni, automatizzare processi e migliorare il flusso di lavoro. Che si tratti di compilare codice, eseguire test o eseguire linting, i task semplificano queste operazioni direttamente dall'editor.