Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Gulp.js, i task di base

Creare gulpfile.js e descrivere un task di Gulp che effettui la copia di file sfruttando i task gulp.src, gulp.dest e il metodo pipe per abilitare lo stream
Creare gulpfile.js e descrivere un task di Gulp che effettui la copia di file sfruttando i task gulp.src, gulp.dest e il metodo pipe per abilitare lo stream
Link copiato negli appunti

Costruire un task per Gulp significa definire un flusso di elaborazione, uno stream, e indicare da dove si parte, cosa succede durante il percorso e dove si arriva. Per questo motivo, prima di esaminare alcuni dei plugin più utili di gulp, vediamo quali sono i tre metodi di base.

Metodo Descrizione
gulp.task Serve per definire uno stream, dargli un nome e stabilire una sequenza di operazioni che costiscono gli step l'elaborazione.
gulp.src Serve a definire il file, la cartella, o l'insieme di file che saranno oggetto dell'elaborazione.
gulp.dest Indica la directory di destinazione in cui troveremo i file prodotti dall'elaborazione.

Copiare file con gulp.js

Per entrare un po' nella pratica vediamo come scrivere un file gulpfile.js che effettui la copia dei file di testo da una cartella src a una cartella build.

var gulp = require('gulp');
gulp.task('default', function(){
  var input  = 'src/**/*.css';
  var output = 'build';
  return gulp.src( input )
   .pipe(gulp.dest( output ));
});

Prima di esaminare più a fondo questo codice, è utile notare che per utilizzare qualunque modulo, quindi anche lo stesso modulo base di gulp, occorre istanziare il relativo oggetto tramite require.

Ecco il risultato atteso:

Nota: I nomi che abbiamo dato alle cartelle seguono la convenzione piuttosto diffusa che vuole tutti i sorgenti nella directory src e tutti gli elaborati nella cartella build di un progetto.

Definire un task di Gulp

Come mostrato nell'esempio per definire un task di Gulp occorre utilizziamo il metodo gulp.task(), la cui sintassi prevede due parametri:

  • una stringa con il nome del task (nel nostro caso 'default');
  • una callback che rappresenta il task associato al nome e che spesso viene definita come funzione implicita, come pure nel nostro caso.

All'interno della callback l'operazione fondamentale è quella di far partire un'elaborazione.

Nota: Come abbiamo visto nella lezione precedente non è a caso che il nome del nostro task sia 'default'. Ricordiamo che è il task che viene eseguito quando lanciamo gulp da riga di comando, a meno di non specificarne un'altro.

gulp.src

Il modulo src serve a collezionare i file che saranno coinvolti nell'elaborazione. In genere si indica questo insieme indicando i percorsi dei file tramite una stringa, come nel nostro caso:

gulp.src( 'src/**/*.css' );

oppure usando un array di stringhe:

gulp.src( ['src/**/*.css', 'lib/**/*.css'] );

Le stringhe sono in formato Glob, una sintanssi molto potente che ci permette ad esempio di selezionare tutti i file con una certa estensione che si trovano nell'albero di directory sottostante un certo percorso.

Nel nostro caso la stringa 'src/**/*.css' indica tutti i file .css che si trovano nella cartella src e in tutto l'albero di sottocartelle.

pipe

Ogni step di elaborazione ritorna un oggetto (stream di Node.js). In particolare, questi oggetti (di tipo readable per chi volesse approfondire) che ci consentono di disporre operazioni in sequenza e sfruttare il risultato di uno step come input dello step successivo. Questo meccanismo lo attiviamo grazie al metodo pipe().

Per i nostri scopi possiamo semplificare il funzionamento di Pipe in questo modo:

  1. prende come parametro l'azione successiva da compiere (un oggetto writable);
  2. passa alla nuova azione il risultato ottenuto della precedente, nel nostro caso quanto ritornato dal metodo gulp.dest();
  3. lancia l'elaborazione che a sua volta produce un nuovo risultato.

gulp.dest

A questo punto è chiaro che gulp.dest ci serve per indicare il percorso in cui riversare il risultato delle operazioni. Nel nostro esempio è utile notare che, nel punto di destinazione, viene riprodotto esattamente l'albero di sottodirectory degli oggetti indicati in gulp.src().

Il nostro primo task è pronto. Non ci resta che arricchirlo con altre e più potenti funzionalità.

Ti consigliamo anche