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