我使用任务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']);
};
我该如何解决这个问题?谢谢你。
答案 0 :(得分:3)
似乎正在监视uglify输出的文件是否有变化,再次触发uglify,等等......
请注意,watch配置为监视目录js
中的每个文件,uglify配置为将结果输出到js/custom.min.js
。
更改其中一个,循环将停止。
例如(取决于您正在使用的手表插件),您可以使用数组和watch
语法更改!
的配置以查看目录,不包括此单个文件,像这样:
watch: {
uglify: {
files: ["js/*.js", "!js/custom.min.js"],
tasks: ['uglify']
}
},
答案 1 :(得分:2)
尝试添加'!js / custom.min.js'到手表的文件。看起来您正在关注该文件的更改,该更改会触发任务再次运行
uglify: {
files: ["js/*.js","!js/custom.min.js"],
tasks: ['uglify']
}