1

私はタスクuglify、cssmin、その他の面倒なタスクを使用します。

たとえば、javascript または css ファイルを変更すると、コンソールに約 10 回のループが表示されます。 ここに画像の説明を入力

... その他

すべての変更とタスクは完璧に機能しますが、この奇妙なループは非常に奇妙です。

これは私の 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 に答える