Skip to content

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

  1. Crea una nuova cartella, inizializza un progetto TypeScript e crea un semplice task per compilare un file TypeScript.

    bash
    mkdir mytask
    cd mytask
    tsc --init
    code .
  2. Crea un file HelloWorld.ts con il seguente contenuto:

    typescript
    function sayHello(name: string): void {
        console.log(`Hello ${name}!`);
    }
    
    sayHello('Dave');
  3. 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

  1. Esegui l'installazione dei moduli npm necessari:

    bash
    npm install
  2. Esegui il task npm per la linting:

    bash
    npm run lint
  3. 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

json
{
  "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 o process).
  • command: Il comando da eseguire.
  • group: Gruppo di task (ad esempio, build o test).
  • 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:

json
{
  "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:

json
{
    "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.

Released under the MIT License.