SlideShare a Scribd company logo
1 of 27
27.05.2016, Federico Dario Ghirardi
GRUNT: come
iniziare
INDEX
▸ Installare Grunt ………………………………………. slide 3
▸ I compiti di uno sviluppatore front-
end……………………………………………………….. slide 5
▸ Concatenare i file ………….………………………... slide 7
▸ Minificare i file ………….…………………………….. slide 12
▸ Ottimizzare le immagini …………….…………….. slide 15
▸ Grunt watch e LIVEreload ………………………… slide 18
▸ Preprocessori ………………………………………….slide 22
GRUNT: come iniziare – Federico Dario Ghirardi
2/26
COME INSTALLARE
GRUNT
1.
3/26
GRUNT: come iniziare – Federico Dario Ghirardi
Come installare Grunt
Grunt e i suoi plugin sono installati e organizzati via npm, un package manager di Node.js.
Assicuratevi di averli installati sulla vostra macchina.
Per installare Grunt basterà scrivere nel terminale
npm install grunt@VERSION --save-dev
In seguito dovrete installare la Grunt's command line interface (CLI) tramite il comando
npm install -g grunt-cli
Ogni volta che grunt viene avviato da terminale, CLI cercherà il nostro Grunt installato in locale usando
require(), una funzione di Node.js. Grazie a questo, potete avviare grunt da ogni sottocartella del vostro
progetto.
4/26
GRUNT: come iniziare – Federico Dario Ghirardi
I COMPITI DI UNO
SVILUPPATORE
FRONT-END
2.
5/26
GRUNT: come iniziare – Federico Dario Ghirardi
▸ Minificare e concatenare file Javascript e CSS
▸ Ottimizzare le immagini
▸ Usare preprocessori
Questi potremmo chiamarli tasks…
...e Grunt è un task runner.
Può fare tutte queste cose per te, eseguendo un semplice comando.
6/26
GRUNT: come iniziare – Federico Dario Ghirardi
CONCATENARE I FILE
3.
7/26
GRUNT: come iniziare – Federico Dario Ghirardi
CONCATENARE i file
Abbiamo 3 file separati
JQUERY.JS
CAROUSEL.JS
GLOBAL.JS
In produzione, vorremmo concatenare
questi file per migliorare le performance
(una richiesta è meglio di 3). Grunt può far
questo per noi.
Prima di tutto dobbiamo scaricare il plugin ufficiale di Grunt grunt-contrib-concat.
E' molto semplice, da terminale basterà scrivere:
npm install grunt-contrib-concat --save-dev
8/26
GRUNT: come iniziare – Federico Dario Ghirardi
CONCATENARE i file
Ora, tutto quello che dobbiamo fare è configurare Grunt e dirgli cosa vogliamo che faccia.
Per farlo, apriamo il file Gruntfile.js
9/26
GRUNT: come iniziare – Federico Dario Ghirardi
CONCATENARE i file
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
concat: {
// 1. La configurazione per concatenare i file va qui.
}
});
// 2. Dove diciamo a Grunt che vogliamo usare il plugin.
grunt.loadNpmTasks('grunt-contrib-concat');
// 3. Dove diciamo a Grunt cosa fare quando scriviamo “grunt” nel terminale.
grunt.registerTask('default', ['concat']);
};
10/26
CONCATENARE i file
Abbiamo 3 files JavaScript che vogliamo concatenare. Scriviamo il loro percorso in src e il percorso di
destinazione in dest. Il file di destinazione non esiste ancora, verrà creato una volta avviato il task.
concat: {
dist: {
src: [
'js/libs/*.js', // Tutti i file js nella cartella libs.
'js/global.js'
],
dest: 'js/build/production.js',
}
}
Una volta salvato il file Grunfile.js con le nostre modifiche, basterà scrivere grunt sul terminale, nel
percorso del nostro progetto.
11/26
GRUNT: come iniziare – Federico Dario Ghirardi
MINIFICARE I FILE4.
12/26
GRUNT: come iniziare – Federico Dario Ghirardi
MINIFICARE i file
Ora i 3 file JavaScript sono diventati un file unico. Minimizziamolo.
1 – Cerchiamo il plugin di Grunt che
ci serve
2 – Impariamo a configurare quel
plugin
3 – Scriviamo la configurazione
Il plugin ufficiale per minificare si chiama grunt-contrib-uglify.
Come prima, da terminale basterà scrivere:
npm install grunt-contrib-uglify --save-dev
13/26
GRUNT: come iniziare – Federico Dario Ghirardi
MINIFICARE i file
Aggiungiamo questa riga nel file Gruntfile.js per caricare il plugin:
grunt.loadNpmTasks('grunt-contrib-uglify');
Poi lo configuriamo:
uglify: {
build: {
src: 'js/build/production.js',
dest: 'js/build/production.min.js'
}
}
Infine aggiorniamo il task di default:
grunt.registerTask('default', ['concat', 'uglify']);
Scrivi grunt nel terminale come prima e otterrai il JavaScript minificato.
14/26
OTTIMIZZARE LE
IMMAGINI
5.
15/26
GRUNT: come iniziare – Federico Dario Ghirardi
OTTIMIZZARE le immagini
Il plugin ufficiale da scaricare in questo caso è grunt-contrib-imagemin:
npm install grunt-contrib-imagemin –save-dev
Registriamolo nel file Gruntfile.js:
grunt.loadNpmTasks('grunt-contrib-imagemin');
Configuriamolo:
imagemin: {
dynamic: {
files: [{
expand: true,
cwd: 'images/',
src: ['**/*.{png,jpg,gif}'],
dest: 'images/build/'
}]
}
}
16/26
GRUNT: come iniziare – Federico Dario Ghirardi
OTTIMIZZARE le immagini
Infine inseriamolo in registerTask come abbiamo fatto con gli altri due plugin:
grunt.registerTask('default', ['concat', 'uglify', 'imagemin']);
Scriviamo grunt nel terminale e l'ottimizzazione sarà completata
17/26
GRUNT: come iniziare – Federico Dario Ghirardi
GRUNT watch e
LIVEreload
6.
18/26
GRUNT: come iniziare – Federico Dario Ghirardi
GRUNT watch e LIVEreload
Quello che abbiamo fatto finora è incredibilmente utile, ma ci sono ancora un paio di task
che facilitano ulteriormente il nostro compito.
Sarebbe bello poter eseguire tutti questi
task (minificare, concatenare,
ottimizzare immagini)
automaticamente...e con grande
sorpresa si può fare!
Nel nostro caso:
1 - Concatenare e minificare JavaScript
quando apportiamo delle modifiche.
2- Ottimizzare le immagini quando una
nuova immagine viene aggiunta.
19/26
GRUNT: come iniziare – Federico Dario Ghirardi
GRUNT watch e LIVEreload
Possiamo far ciò “guardando” i file. Possiamo dire a Grunt di tenere d'occhio cambiamenti in parti
specifiche del nostro progetto e, quando succede qualcosa, di svolgere determinati tasks.
Anche qui ci viene incontro il plugin ufficiale, grunt-contrib-watch.
Nel file Gruntfile.js andremo ad aggiungere:
watch: {
scripts: {
files: ['js/*.js'],
tasks: ['concat', 'uglify'],
options: {
spawn: false,
},
}
}
20/26
GRUNT: come iniziare – Federico Dario Ghirardi
GRUNT watch e LIVEreload
Livereload, invece, permette di evitare la solita trafila “cambia css – aggiorna la pagina” perché non ci
sarà bisogno di aggiornare la pagina del browser, evento che avviene automaticamente una volta
effettuato un cambiamento. Inoltre nel caso specifico di un cambiamento nel CSS, la pagina non si
refresha ma semplicemente vengono aggiunti gli stili nuovi.
Questa volta non c'è un plugin ufficiale, ma vi basterà scrivere Livereload Grunt sul web per trovarlo.
Una volta installato nel solito file Gruntfile.js scriverete questo:
. watch: {
options: {
livereload: true,
},
scripts: {
/* etc */
21/26
GRUNT: come iniziare – Federico Dario Ghirardi
PREPROCESSORI7.
22/26
GRUNT: come iniziare – Federico Dario Ghirardi
PREprocessori
Scaricando il plugin grunt-contrib-sass e avendo Sass installato nella nostra macchina, potremo far
fare a Grunt anche questo task.
Sass si minifica da solo, quindi con questo codice compiliamo il nostro global.scss:
sass: {
dist: {
options: {
style: 'compressed'
},
files: {
'css/build/global.css': 'css/global.scss'
}
}
}
23/26
GRUNT: come iniziare – Federico Dario Ghirardi
PREprocessori
Non vogliamo però avviare manualmente questo task, quindi utilizzeremo ancora il plugin watch.
css: {
files: ['css/*.scss'],
tasks: ['sass'],
options: {
spawn: false,
}
}
Ora, ogni volta che effettueremo un cambiamento nei file Sass, il CSS verrà automaticamente
aggiornato.
24/26
GRUNT: come iniziare – Federico Dario Ghirardi
BIBLIOGRAFIA & CREDITS
▸ Grunt for People Who Think Things Like Grunt are Weird and
Hard - https://24ways.org/2013/grunt-is-not-weird-and-hard/
▸ Grunt: un tool per l'ottimizzazione dei progetti Javascript -
http://www.mrwebmaster.it/javascript/grunt-ottimizzazione-
javascript_12108.html
▸ Concat & Watch: La leggerezza di utilizzare Grunt come Task
Runner - http://danilodelfio.com/2016/01/13/build-watch-check-
error-la-leggerezza-di-utilizzare-grunt-come-task-runner/
25/26
GRUNT: come iniziare – Federico Dario Ghirardi
GRAZIE per l’attenzione!
Dubbi o domande?
Il mio contatto diretto:
federico.ghirardi@openstyle.it
26/26
GRUNT: come iniziare – Federico Dario Ghirardi
SlidesCarnival icons are editable shapes.
This means that you can:
● Resize them without losing quality.
● Change line color, width and style.
Isn’t that nice? :)
Examples:

More Related Content

Viewers also liked

Broshure rasterised
Broshure rasterisedBroshure rasterised
Broshure rasterised
Sergey
 
อ ปกรณ เคร_อข_ายคอมพ_วเตอร_16
อ ปกรณ เคร_อข_ายคอมพ_วเตอร_16อ ปกรณ เคร_อข_ายคอมพ_วเตอร_16
อ ปกรณ เคร_อข_ายคอมพ_วเตอร_16
Pitchakorn Srikul
 
Blog de jorthey
Blog de jortheyBlog de jorthey
Blog de jorthey
eljorth
 
Daniel_Jason_M.S._Mechanical_Engineer_
Daniel_Jason_M.S._Mechanical_Engineer_Daniel_Jason_M.S._Mechanical_Engineer_
Daniel_Jason_M.S._Mechanical_Engineer_
Daniel Jason, M.S.
 

Viewers also liked (12)

Підсумки ЗНО-2016 у м.Ізмаїл
Підсумки ЗНО-2016 у м.ІзмаїлПідсумки ЗНО-2016 у м.Ізмаїл
Підсумки ЗНО-2016 у м.Ізмаїл
 
Broshure rasterised
Broshure rasterisedBroshure rasterised
Broshure rasterised
 
Rusandenglang
RusandenglangRusandenglang
Rusandenglang
 
Mu0011 – management and organisational development
Mu0011 – management and organisational developmentMu0011 – management and organisational development
Mu0011 – management and organisational development
 
Los simpsons
Los simpsonsLos simpsons
Los simpsons
 
อ ปกรณ เคร_อข_ายคอมพ_วเตอร_16
อ ปกรณ เคร_อข_ายคอมพ_วเตอร_16อ ปกรณ เคร_อข_ายคอมพ_วเตอร_16
อ ปกรณ เคร_อข_ายคอมพ_วเตอร_16
 
Blog de jorthey
Blog de jortheyBlog de jorthey
Blog de jorthey
 
Daniel_Jason_M.S._Mechanical_Engineer_
Daniel_Jason_M.S._Mechanical_Engineer_Daniel_Jason_M.S._Mechanical_Engineer_
Daniel_Jason_M.S._Mechanical_Engineer_
 
Guida a less
Guida a lessGuida a less
Guida a less
 
Wonder Cafe Table Cards
Wonder Cafe Table CardsWonder Cafe Table Cards
Wonder Cafe Table Cards
 
flower arrangement
 flower arrangement flower arrangement
flower arrangement
 
Confartigianato | Comprami: il processo di vendita come relazione
Confartigianato | Comprami: il processo di vendita come relazioneConfartigianato | Comprami: il processo di vendita come relazione
Confartigianato | Comprami: il processo di vendita come relazione
 

Similar to Grunt come iniziare

Similar to Grunt come iniziare (20)

TuxIsAlive
TuxIsAliveTuxIsAlive
TuxIsAlive
 
Con Aruba, a lezione di cloud #lezione 30 - parte 1: 'GitLab e Cloud Server ...
Con Aruba, a lezione di cloud  #lezione 30 - parte 1: 'GitLab e Cloud Server ...Con Aruba, a lezione di cloud  #lezione 30 - parte 1: 'GitLab e Cloud Server ...
Con Aruba, a lezione di cloud #lezione 30 - parte 1: 'GitLab e Cloud Server ...
 
Installazione Qt/Qt Quick per target Android
Installazione Qt/Qt Quick  per target AndroidInstallazione Qt/Qt Quick  per target Android
Installazione Qt/Qt Quick per target Android
 
Il dual boot scolastico perfetto (2012)
Il dual boot scolastico perfetto (2012)Il dual boot scolastico perfetto (2012)
Il dual boot scolastico perfetto (2012)
 
Creazione componenti con Vue js
Creazione componenti con Vue jsCreazione componenti con Vue js
Creazione componenti con Vue js
 
Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web App
Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web AppTech Webinar: Come ottimizzare il workflow nello sviluppo di Web App
Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web App
 
Openmoko
OpenmokoOpenmoko
Openmoko
 
Installazione ambientepython ubuntumate
Installazione ambientepython ubuntumateInstallazione ambientepython ubuntumate
Installazione ambientepython ubuntumate
 
Con Aruba, a lezione di cloud #lezione 29: 'GitLab e Cloud Server Smart - Ins...
Con Aruba, a lezione di cloud #lezione 29: 'GitLab e Cloud Server Smart - Ins...Con Aruba, a lezione di cloud #lezione 29: 'GitLab e Cloud Server Smart - Ins...
Con Aruba, a lezione di cloud #lezione 29: 'GitLab e Cloud Server Smart - Ins...
 
Accesso remoto al proprio computer in una rete eterogenea
Accesso remoto al proprio computer in una rete eterogeneaAccesso remoto al proprio computer in una rete eterogenea
Accesso remoto al proprio computer in una rete eterogenea
 
Introduzione alla programmazione Android - Android@tulug
Introduzione alla programmazione Android - Android@tulugIntroduzione alla programmazione Android - Android@tulug
Introduzione alla programmazione Android - Android@tulug
 
Grasso
GrassoGrasso
Grasso
 
Installazione Solid Edge ST7
Installazione Solid Edge ST7Installazione Solid Edge ST7
Installazione Solid Edge ST7
 
Con Aruba, a lezione di cloud #lezione 16 - parte 2: 'Centralino VoIP nel cloud'
Con Aruba, a lezione di cloud #lezione 16 - parte 2: 'Centralino VoIP nel cloud'Con Aruba, a lezione di cloud #lezione 16 - parte 2: 'Centralino VoIP nel cloud'
Con Aruba, a lezione di cloud #lezione 16 - parte 2: 'Centralino VoIP nel cloud'
 
Non Conventional Android Programming (Italiano)
Non Conventional Android Programming (Italiano)Non Conventional Android Programming (Italiano)
Non Conventional Android Programming (Italiano)
 
KDE Plasma widgets
KDE Plasma widgetsKDE Plasma widgets
KDE Plasma widgets
 
Lezione Android prima parte
Lezione Android prima parteLezione Android prima parte
Lezione Android prima parte
 
Post gresql su_raspberry
Post gresql su_raspberryPost gresql su_raspberry
Post gresql su_raspberry
 
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...
 
Standard Dev Workflow
Standard Dev WorkflowStandard Dev Workflow
Standard Dev Workflow
 

More from Mirko Cuneo

More from Mirko Cuneo (8)

Come passare dalla teoria alla pratica
Come passare dalla teoria alla praticaCome passare dalla teoria alla pratica
Come passare dalla teoria alla pratica
 
Isettedaevitare
IsettedaevitareIsettedaevitare
Isettedaevitare
 
La tecnica del pomodoro
La tecnica del pomodoroLa tecnica del pomodoro
La tecnica del pomodoro
 
Pianificare la ricerca e selezione del personale
Pianificare la ricerca e selezione del personalePianificare la ricerca e selezione del personale
Pianificare la ricerca e selezione del personale
 
La gestione strategica delle risorse umane
La gestione strategica delle risorse umaneLa gestione strategica delle risorse umane
La gestione strategica delle risorse umane
 
Leadership & Leader, Cos'è la leadership
 Leadership & Leader, Cos'è la leadership Leadership & Leader, Cos'è la leadership
Leadership & Leader, Cos'è la leadership
 
Problem solving - Applicare il pensiero creativo alla risoluzione di un problema
Problem solving - Applicare il pensiero creativo alla risoluzione di un problemaProblem solving - Applicare il pensiero creativo alla risoluzione di un problema
Problem solving - Applicare il pensiero creativo alla risoluzione di un problema
 
Team working - Costruire i rapporti per lavorare bene assieme
Team working - Costruire i rapporti per lavorare bene assiemeTeam working - Costruire i rapporti per lavorare bene assieme
Team working - Costruire i rapporti per lavorare bene assieme
 

Grunt come iniziare

  • 1. 27.05.2016, Federico Dario Ghirardi GRUNT: come iniziare
  • 2. INDEX ▸ Installare Grunt ………………………………………. slide 3 ▸ I compiti di uno sviluppatore front- end……………………………………………………….. slide 5 ▸ Concatenare i file ………….………………………... slide 7 ▸ Minificare i file ………….…………………………….. slide 12 ▸ Ottimizzare le immagini …………….…………….. slide 15 ▸ Grunt watch e LIVEreload ………………………… slide 18 ▸ Preprocessori ………………………………………….slide 22 GRUNT: come iniziare – Federico Dario Ghirardi 2/26
  • 3. COME INSTALLARE GRUNT 1. 3/26 GRUNT: come iniziare – Federico Dario Ghirardi
  • 4. Come installare Grunt Grunt e i suoi plugin sono installati e organizzati via npm, un package manager di Node.js. Assicuratevi di averli installati sulla vostra macchina. Per installare Grunt basterà scrivere nel terminale npm install grunt@VERSION --save-dev In seguito dovrete installare la Grunt's command line interface (CLI) tramite il comando npm install -g grunt-cli Ogni volta che grunt viene avviato da terminale, CLI cercherà il nostro Grunt installato in locale usando require(), una funzione di Node.js. Grazie a questo, potete avviare grunt da ogni sottocartella del vostro progetto. 4/26 GRUNT: come iniziare – Federico Dario Ghirardi
  • 5. I COMPITI DI UNO SVILUPPATORE FRONT-END 2. 5/26 GRUNT: come iniziare – Federico Dario Ghirardi
  • 6. ▸ Minificare e concatenare file Javascript e CSS ▸ Ottimizzare le immagini ▸ Usare preprocessori Questi potremmo chiamarli tasks… ...e Grunt è un task runner. Può fare tutte queste cose per te, eseguendo un semplice comando. 6/26 GRUNT: come iniziare – Federico Dario Ghirardi
  • 7. CONCATENARE I FILE 3. 7/26 GRUNT: come iniziare – Federico Dario Ghirardi
  • 8. CONCATENARE i file Abbiamo 3 file separati JQUERY.JS CAROUSEL.JS GLOBAL.JS In produzione, vorremmo concatenare questi file per migliorare le performance (una richiesta è meglio di 3). Grunt può far questo per noi. Prima di tutto dobbiamo scaricare il plugin ufficiale di Grunt grunt-contrib-concat. E' molto semplice, da terminale basterà scrivere: npm install grunt-contrib-concat --save-dev 8/26 GRUNT: come iniziare – Federico Dario Ghirardi
  • 9. CONCATENARE i file Ora, tutto quello che dobbiamo fare è configurare Grunt e dirgli cosa vogliamo che faccia. Per farlo, apriamo il file Gruntfile.js 9/26 GRUNT: come iniziare – Federico Dario Ghirardi
  • 10. CONCATENARE i file module.exports = function(grunt) { grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), concat: { // 1. La configurazione per concatenare i file va qui. } }); // 2. Dove diciamo a Grunt che vogliamo usare il plugin. grunt.loadNpmTasks('grunt-contrib-concat'); // 3. Dove diciamo a Grunt cosa fare quando scriviamo “grunt” nel terminale. grunt.registerTask('default', ['concat']); }; 10/26
  • 11. CONCATENARE i file Abbiamo 3 files JavaScript che vogliamo concatenare. Scriviamo il loro percorso in src e il percorso di destinazione in dest. Il file di destinazione non esiste ancora, verrà creato una volta avviato il task. concat: { dist: { src: [ 'js/libs/*.js', // Tutti i file js nella cartella libs. 'js/global.js' ], dest: 'js/build/production.js', } } Una volta salvato il file Grunfile.js con le nostre modifiche, basterà scrivere grunt sul terminale, nel percorso del nostro progetto. 11/26 GRUNT: come iniziare – Federico Dario Ghirardi
  • 12. MINIFICARE I FILE4. 12/26 GRUNT: come iniziare – Federico Dario Ghirardi
  • 13. MINIFICARE i file Ora i 3 file JavaScript sono diventati un file unico. Minimizziamolo. 1 – Cerchiamo il plugin di Grunt che ci serve 2 – Impariamo a configurare quel plugin 3 – Scriviamo la configurazione Il plugin ufficiale per minificare si chiama grunt-contrib-uglify. Come prima, da terminale basterà scrivere: npm install grunt-contrib-uglify --save-dev 13/26 GRUNT: come iniziare – Federico Dario Ghirardi
  • 14. MINIFICARE i file Aggiungiamo questa riga nel file Gruntfile.js per caricare il plugin: grunt.loadNpmTasks('grunt-contrib-uglify'); Poi lo configuriamo: uglify: { build: { src: 'js/build/production.js', dest: 'js/build/production.min.js' } } Infine aggiorniamo il task di default: grunt.registerTask('default', ['concat', 'uglify']); Scrivi grunt nel terminale come prima e otterrai il JavaScript minificato. 14/26
  • 15. OTTIMIZZARE LE IMMAGINI 5. 15/26 GRUNT: come iniziare – Federico Dario Ghirardi
  • 16. OTTIMIZZARE le immagini Il plugin ufficiale da scaricare in questo caso è grunt-contrib-imagemin: npm install grunt-contrib-imagemin –save-dev Registriamolo nel file Gruntfile.js: grunt.loadNpmTasks('grunt-contrib-imagemin'); Configuriamolo: imagemin: { dynamic: { files: [{ expand: true, cwd: 'images/', src: ['**/*.{png,jpg,gif}'], dest: 'images/build/' }] } } 16/26 GRUNT: come iniziare – Federico Dario Ghirardi
  • 17. OTTIMIZZARE le immagini Infine inseriamolo in registerTask come abbiamo fatto con gli altri due plugin: grunt.registerTask('default', ['concat', 'uglify', 'imagemin']); Scriviamo grunt nel terminale e l'ottimizzazione sarà completata 17/26 GRUNT: come iniziare – Federico Dario Ghirardi
  • 18. GRUNT watch e LIVEreload 6. 18/26 GRUNT: come iniziare – Federico Dario Ghirardi
  • 19. GRUNT watch e LIVEreload Quello che abbiamo fatto finora è incredibilmente utile, ma ci sono ancora un paio di task che facilitano ulteriormente il nostro compito. Sarebbe bello poter eseguire tutti questi task (minificare, concatenare, ottimizzare immagini) automaticamente...e con grande sorpresa si può fare! Nel nostro caso: 1 - Concatenare e minificare JavaScript quando apportiamo delle modifiche. 2- Ottimizzare le immagini quando una nuova immagine viene aggiunta. 19/26 GRUNT: come iniziare – Federico Dario Ghirardi
  • 20. GRUNT watch e LIVEreload Possiamo far ciò “guardando” i file. Possiamo dire a Grunt di tenere d'occhio cambiamenti in parti specifiche del nostro progetto e, quando succede qualcosa, di svolgere determinati tasks. Anche qui ci viene incontro il plugin ufficiale, grunt-contrib-watch. Nel file Gruntfile.js andremo ad aggiungere: watch: { scripts: { files: ['js/*.js'], tasks: ['concat', 'uglify'], options: { spawn: false, }, } } 20/26 GRUNT: come iniziare – Federico Dario Ghirardi
  • 21. GRUNT watch e LIVEreload Livereload, invece, permette di evitare la solita trafila “cambia css – aggiorna la pagina” perché non ci sarà bisogno di aggiornare la pagina del browser, evento che avviene automaticamente una volta effettuato un cambiamento. Inoltre nel caso specifico di un cambiamento nel CSS, la pagina non si refresha ma semplicemente vengono aggiunti gli stili nuovi. Questa volta non c'è un plugin ufficiale, ma vi basterà scrivere Livereload Grunt sul web per trovarlo. Una volta installato nel solito file Gruntfile.js scriverete questo: . watch: { options: { livereload: true, }, scripts: { /* etc */ 21/26 GRUNT: come iniziare – Federico Dario Ghirardi
  • 22. PREPROCESSORI7. 22/26 GRUNT: come iniziare – Federico Dario Ghirardi
  • 23. PREprocessori Scaricando il plugin grunt-contrib-sass e avendo Sass installato nella nostra macchina, potremo far fare a Grunt anche questo task. Sass si minifica da solo, quindi con questo codice compiliamo il nostro global.scss: sass: { dist: { options: { style: 'compressed' }, files: { 'css/build/global.css': 'css/global.scss' } } } 23/26 GRUNT: come iniziare – Federico Dario Ghirardi
  • 24. PREprocessori Non vogliamo però avviare manualmente questo task, quindi utilizzeremo ancora il plugin watch. css: { files: ['css/*.scss'], tasks: ['sass'], options: { spawn: false, } } Ora, ogni volta che effettueremo un cambiamento nei file Sass, il CSS verrà automaticamente aggiornato. 24/26 GRUNT: come iniziare – Federico Dario Ghirardi
  • 25. BIBLIOGRAFIA & CREDITS ▸ Grunt for People Who Think Things Like Grunt are Weird and Hard - https://24ways.org/2013/grunt-is-not-weird-and-hard/ ▸ Grunt: un tool per l'ottimizzazione dei progetti Javascript - http://www.mrwebmaster.it/javascript/grunt-ottimizzazione- javascript_12108.html ▸ Concat & Watch: La leggerezza di utilizzare Grunt come Task Runner - http://danilodelfio.com/2016/01/13/build-watch-check- error-la-leggerezza-di-utilizzare-grunt-come-task-runner/ 25/26 GRUNT: come iniziare – Federico Dario Ghirardi
  • 26. GRAZIE per l’attenzione! Dubbi o domande? Il mio contatto diretto: federico.ghirardi@openstyle.it 26/26 GRUNT: come iniziare – Federico Dario Ghirardi
  • 27. SlidesCarnival icons are editable shapes. This means that you can: ● Resize them without losing quality. ● Change line color, width and style. Isn’t that nice? :) Examples: