1

我使用任务 uglify、cssmin 和其他 grunt 任务。

例如,如果我只对我的 javascript 或 css 文件进行更改......控制台会向我显示大约十次循环: 在此处输入图像描述

... ETC

所有更改和任务都完美运行,但是这个奇怪的循环非常奇怪。

这是我的 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']);
};

我怎样才能解决这个问题?谢谢。

4

2 回答 2

3

似乎正在监视 uglify 输出的文件以进行更改,再次触发 uglify 等等......

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

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

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

watch: {
  uglify: {
    files: ["js/*.js", "!js/custom.min.js"],
    tasks: ['uglify']
  }
},
于 2015-08-11T21:45:00.193 回答
2

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

  uglify: {
    files: ["js/*.js","!js/custom.min.js"],
    tasks: ['uglify']
  }
于 2015-08-11T21:47:20.550 回答