web-dev-qa-db-fra.com

Comment ignorer les fichiers grogner uglify

Contexte

Je viens de commencer à utiliser grunt il y a environ 30 minutes. Alors sois indulgent avec moi.

Mais j'ai un script assez simple qui va regarder mes js puis les compresser en un seul fichier pour moi.

Code

"use strict";
module.exports = function (grunt) {

    // load all grunt tasks
    require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);

    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        uglify: {
            options: {
                beautify: true,
                report: 'gzip'
            },
            build: {
                src: ['docroot/js/*.js', 'docroot/components/pages/*.js', 'docroot/components/plugins/*.js'],
                dest: 'docroot/js/main.min.js'
            }
        },
        watch: {
            options: {
                dateFormat: function(time) {
                    grunt.log.writeln('The watch finished in ' + time + 'ms at' + (new Date()).toString());
                    grunt.log.writeln('Waiting for more changes...');
                }
            },
            js: {
                files: '<%= uglify.build.src %>',
                tasks: ['uglify']
            }
        }
    });

    grunt.registerTask('default', 'watch');

}

Question

Mon main.min.js est inclus à chaque fois dans la compilation. Cela signifie que mon min.js obtient 2x, 4x, 8x, 16x, etc. La meilleure façon de contourner cela est d'ajouter une exception et d'ignorer main.min.js?

53
Jamie Hutber

À la fin du tableau src, ajoutez

'!docroot/js/main.min.js'

Cela l'exclura. Le ! le transforme en une exclusion.

http://gruntjs.com/api/grunt.file#grunt.file.expand

Chemins correspondant aux modèles qui commencent par! sera exclu du tableau renvoyé. Les modèles sont traités dans l'ordre, donc l'ordre d'inclusion et d'exclusion est important.

Ce n'est pas spécifique à grunt uglify, mais toute tâche qui utilise la convention grunt pour spécifier des fichiers fonctionnera de cette façon.

Comme conseil général, je suggérerais de placer les fichiers construits ailleurs que vos fichiers source. Comme dans un dossier racine dist.

119
Martin Hansen