Grunt - Exemple de fichier
Dans ce chapitre, créons un simple fichier Grunt en utilisant les plugins suivants -
- grunt-contrib-uglify
- grunt-contrib-concat
- grunt-contrib-jshint
- grunt-contrib-watch
Installez tous les plugins ci-dessus et suivez les étapes ci-dessous pour créer un simple Gruntfile.js -
Step 1- Vous devez créer une fonction wrapper , qui encapsule les configurations de votre Grunt.
module.exports = function(grunt) {};
Step 2 - Initialisez votre objet de configuration comme indiqué ci-dessous -
grunt.initConfig({});
Step 3- Ensuite, lisez les paramètres du projet du fichier package.json dans la propriété pkg . Cela nous permet de faire référence aux valeurs des propriétés dans votre fichier package.json .
pkg: grunt.file.readJSON('package.json')
Step 4- Ensuite, vous pouvez définir des configurations pour les tâches. Créons notre première tâche concat pour concaténer tous les fichiers présents dans le dossier src / et stocker le fichier .js concaténé sous le dossier 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- Maintenant, créons une autre tâche appelée uglify pour minimiser notre 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 %>']
}
}
}
La tâche ci-dessus crée un fichier dans le dossier dist / qui contient les fichiers .js minifiés. le<%= concat.dist.dest %>demandera à uglify de réduire le fichier généré par la tâche concat.
Step 6- Configurons le plugin JSHint en créant une tâche 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,
}
}
}
La tâche jshint ci-dessus accepte un tableau de fichiers puis un objet d'options. La tâche ci-dessus recherchera toute violation de codage dans les fichiers Gruntfile.js et src / ** / *. Js .
Step 7- Ensuite, nous avons la tâche de surveillance qui recherche les modifications dans l'un des fichiers spécifiés et exécute les tâches que vous spécifiez.
watch: {
files: ['<%= jshint.files %>'],
tasks: ['jshint']
}
Step 8- Ensuite, nous devons charger les plugins Grunt qui ont tous été installés via _npm .
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-concat');
Step 9- Enfin, nous devons définir la tâche par défaut .
grunt.registerTask('default', ['jshint', 'concat', 'uglify']);
La tâche par défaut peut être exécutée en tapant simplement la commande grunt sur la ligne de commande.
Voici votre Gruntfile.js complet -
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']);
};