Grunt - File di esempio
In questo capitolo, creiamo un semplice file Grunt usando i seguenti plugin:
- grunt-contrib-uglify
- grunt-contrib-concat
- grunt-contrib-jshint
- grunt-contrib-watch
Installa tutti i plugin di cui sopra e segui i passaggi indicati di seguito per creare un semplice Gruntfile.js -
Step 1- Devi creare una funzione wrapper , che incapsuli le configurazioni per il tuo Grunt.
module.exports = function(grunt) {};
Step 2 - Inizializza il tuo oggetto di configurazione come mostrato di seguito -
grunt.initConfig({});
Step 3- Successivamente, leggi le impostazioni del progetto dal file package.json nella proprietà pkg . Ci consente di fare riferimento ai valori delle proprietà all'interno del file package.json .
pkg: grunt.file.readJSON('package.json')
Step 4- Successivamente, puoi definire le configurazioni per le attività. Creiamo il nostro primo task concat per concatenare tutti i file presenti nella cartella src / e archiviare il file .js concatenato nella cartella dist / .
concat: {
options: {
// define a string to insert between files in the concatenated output
separator: ';'
},
dist: {
// files needs to be concatenated
src: ['src/**/*.js'],
// location of the concatenated output JS file
dest: 'dist/<%= pkg.name %>.js'
}
}
Step 5- Ora, creiamo un'altra attività chiamata uglify per minimizzare il nostro JavaScript.
uglify: {
options: {
// banner will be inserted at the top of the output which displays the date and time
banner: '/*! <%= pkg.name %> <%= grunt.template.today() %> */\n'
},
dist: {
files: {
'dist/<%= pkg.name %>.min.js': ['<%= concat.dist.dest %>']
}
}
}
L'attività precedente crea un file all'interno della cartella dist / che contiene i file .js minimizzati. Il<%= concat.dist.dest %>istruirà uglify a minimizzare il file generato dall'attività concatenata .
Step 6- Configuriamo il plugin JSHint creando un'attività jshint .
jshint: {
// define the files to lint
files: ['Gruntfile.js', 'src/**/*.js'],
// configure JSHint
options: {
// more options here if you want to override JSHint defaults
globals: {
jQuery: true,
}
}
}
L' attività jshint sopra accetta un array di file e quindi un oggetto di opzioni. L'attività precedente cercherà qualsiasi violazione del codice nei file Gruntfile.js e src / ** / *. Js .
Step 7- Successivamente, abbiamo l' attività di controllo che cerca le modifiche in uno qualsiasi dei file specificati ed esegue le attività specificate.
watch: {
files: ['<%= jshint.files %>'],
tasks: ['jshint']
}
Step 8- Successivamente, dobbiamo caricare i plugin Grunt che sono stati tutti installati tramite _npm .
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-concat');
Step 9- Infine, dobbiamo definire l' attività predefinita .
grunt.registerTask('default', ['jshint', 'concat', 'uglify']);
L' attività predefinita può essere eseguita semplicemente digitando il comando grunt sulla riga di comando.
Ecco il tuo Gruntfile.js completo -
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
concat: {
options: {
separator: ';'
},
dist: {
src: ['src/**/*.js'],
dest: 'dist/<%= pkg.name %>.js'
}
},
uglify: {
options: {
banner: '/*! <%= pkg.name %> <%= grunt.template.today() %> */\n'
},
dist: {
files: {
'dist/<%= pkg.name %>.min.js': ['<%= concat.dist.dest %>']
}
}
},
jshint: {
// define the files to lint
files: ['Gruntfile.js', 'src/**/*.js'],
// configure JSHint
options: {
// more options here if you want to override JSHint defaults
globals: {
jQuery: true,
}
}
},
watch: {
files: ['<%= jshint.files %>'],
tasks: ['jshint']
}
});
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.registerTask('default', ['jshint', 'concat', 'uglify']);
};