===== Fichier Gruntfile.js ===== Le second fichier à générer (toujours à la racine du projet), ''Gruntfile.js'', liste les tâches proprement dites ainsi que les options à appliquer. Même en suivant les indications trouvées sur la toile, la syntaxe de chaque tâche est assez difficile à trouver donc il vaut mieux commencer par une seule tâche et n'en ajouter une autre qu'une fois que celle-ci fonctionne, et ainsi de suite. Voici un exemple fonctionnel avec une tâche ''Autoprefixer'' : module.exports = function(grunt) { grunt.loadNpmTasks('grunt-postcss'); grunt.initConfig({ postcss: { options: { map: false, processors: [ require('autoprefixer')({ browsers: ['last 2 versions'] }) ] }, dist: { files: [{ expand: true, flatten: true, src: './css/src/*.*', dest: './css/dist/' }] } } }); grunt.registerTask('default', ['postcss']); }; Ici, tous les fichiers (grâce au joker ''*.*'') contenus dans le chemin relatif ''./css/src'' (à partir de la racine du projet où l'on a placé les fichiers ''package.json'' et ''Gruntfile.js'') seront passés à la moulinette //postcss// et le résultat sera enregistré dans le chemin relatif ''./css/dist''. Pour lancer la tâche, il suffit (toujours en étant à la racine du projet) de lancer cette commande : PS D:\www.dev> grunt Running "postcss:dist" (postcss) task >> 5 processed stylesheets created. Done, without errors. Ce qu'il reste à faire : * automatiser la tâche grâce au package grunt-watch (qui l'activera dès que l'un des fichiers du dossier ''src'' sera modifié * vérifier s'il faut automatiser la mise à jour de ''caniuse-db'' (la base de données du site bien connu [[http://caniuse.com/|Can I use]] * ajouter la "minification" module.exports = function(grunt) { grunt.loadNpmTasks('grunt-postcss'); grunt.initConfig({ postcss: { options: { map: false, processors: [ require('autoprefixer')({ browsers: ['last 2 versions'] }) ] }, dist: { files: [{ expand: true, flatten: true, src: './css/src/*.*', dest: './css/dist/' }] } } }); grunt.registerTask('default', ['postcss']); }; module.exports = function(grunt) { grunt.loadNpmTasks('grunt-postcss'); grunt.initConfig({ postcss: { options: { map: false, processors: [ require('autoprefixer')({ browsers: ['last 2 versions'] }) ] }, dist: { files: [{ expand: true, flatten: true, src: './css/src/*.*', dest: './css/dist/' }] } } }); grunt.registerTask('default', ['postcss']); }; module.exports = function(grunt) { grunt.loadNpmTasks('grunt-postcss'); grunt.initConfig({ postcss: { options: { map: false, processors: [ require('autoprefixer')({ browsers: ['last 2 versions'] }) ] }, dist: { files: [{ expand: true, flatten: true, src: './css/src/*.*', dest: './css/dist/' }] } } }); grunt.registerTask('default', ['postcss']); };