Задача Grunt создает цикл в моей консоли

Использую таск uglify, cssmin и другие grunt таски.

Например, если я просто изменю свои файлы javascript или css... консоль покажет мне цикл около десяти раз: введите здесь описание изображения

... ТАК ДАЛЕЕ

Все изменения и задачи работают отлично, но этот любопытный цикл очень странный.

Это мой Gruntfile.js:

    //Gruntfile.js
    module.exports = function (grunt) {
    grunt.initConfig({

    // Watch task config
    watch: {
      sass: {
        files: "scss/*.scss",
        tasks: ['sass']
      },
      cssmin: {
        files: "css/*.css",
        tasks: ['cssmin']
      },
      uglify: {
        files: "js/*.js",
        tasks: ['uglify']
      }
    },

    // Sass task config
    sass: {
        dev: {
            files: {
                // fichero destino  // fichero .scss
                "css/custom.css" : "scss/custom.scss"
            }
        }
    },

    // BrowserSync task config
    browserSync: {
      default_options: {
        bsFiles: {
          src: [
            "css/*.css",
            "js/*.js",
            "*.html"
          ]
        },
        options: {
          watchTask: true,
          proxy: "tutorialmaterialize.dev"
          }
        }
      },

    // UnCSS task config  
    uncss: {
        dist: {
            options: {
               //Estilos que queremos limpiar
               stylesheets : ['css/materialize.min.css'],

               //Estilos que no queremos limpiar
               ignoreSheets: [/custom.css/], 
            },
            files: {
                    //Archivo css de salida    //Scanea las clases, ids, etc de este html
                    'css/materialize.min.css': ['index.html']
            }
        }
    },

    // Cssmin task config
    cssmin: {
      options: {
        shorthandCompacting: false,
        roundingPrecision: -1
      },
      target: {
        files: {//Fichero combinado   //Ficheros que vamos a combinar, 2 .css
                'css/allcss.min.css': ['css/custom.css', 'css/materialize.min.css']
        }
      }
    },

    //Uglify task config  
    uglify: {
      build: {
        src: 'js/custom.js',//Ruta de fichero de entrada
        dest: 'js/custom.min.js'//Ruta del fichero minificado
      }
    }

  });

  //Cargamos los grunt plugins
  grunt.loadNpmTasks('grunt-contrib-watch');
  grunt.loadNpmTasks('grunt-contrib-sass');
  grunt.loadNpmTasks('grunt-browser-sync');
  grunt.loadNpmTasks('grunt-uncss');
  grunt.loadNpmTasks('grunt-contrib-cssmin');
  grunt.loadNpmTasks('grunt-contrib-uglify');

 //Default task
 grunt.registerTask('default', ['browserSync', 'watch']);
};

Как я могу это исправить? Спасибо.


person Funny Frontend    schedule 11.08.2015    source источник


Ответы (2)


Похоже, файл, выводимый uglify, отслеживается на наличие изменений, снова запуская uglify и так далее...

Обратите внимание, что watch настроен на просмотр каждого файла в каталоге js, а uglify настроен на вывод результатов в каталог js/custom.min.js.

Измените один из них, и цикл остановится.

Например (в зависимости от того, какой плагин просмотра вы используете), вы, вероятно, можете изменить конфигурацию watch для просмотра каталога, исключая этот единственный файл, используя синтаксис массива и !, например:

watch: {
  uglify: {
    files: ["js/*.js", "!js/custom.min.js"],
    tasks: ['uglify']
  }
},
person doldt    schedule 11.08.2015

Попробуйте добавить '!js/custom.min.js' в ваши файлы часов. Похоже, вы отслеживаете изменения в этом файле, которые вызывают повторный запуск задачи.

  uglify: {
    files: ["js/*.js","!js/custom.min.js"],
    tasks: ['uglify']
  }
person blackmind    schedule 11.08.2015