Grunt 任务在我的控制台中生成一个循环

Grunt task generates a loop in my console

我使用任务 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']);
};

我该如何解决这个问题?谢谢。

好像正在监视 uglify 输出的文件是否有变化,再次触发 uglify,等等...

注意 watch 配置为监视目录 js 中的每个文件,uglify 配置为将结果输出到 js/custom.min.js.

更改其中之一,循环将停止。

例如(取决于您使用的 watch 插件),您可以更改 watch 的配置以使用数组和 ! 来监视目录,不包括这个单个文件语法,像这样:

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

尝试将“!js/custom.min.js”添加到手表的文件中。看起来您正在监视该文件的更改,这会触发任务再次 运行

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