我想要一个带有 2 个任务的 gruntfile:less(编译所有 less 文件)和 watch(监听更改并重新编译更改的文件)。
我有以下 Gruntfile.js:
module.exports = function(grunt) {
var files = [
{
expand: true,
cwd: 'media/less',
src: ['*.less'],
dest: 'media/css/',
ext: '.css'
},
{
expand: true,
cwd: 'media/less/vendor',
src: ['*.less'],
dest: 'media/css/vendor/',
ext: '.css'
},
{
expand: true,
cwd: 'media/admin/less',
src: ['*.less'],
dest: 'media/admin/css/',
ext: '.css'
}
];
grunt.initConfig({
less: {
development: {
options: {
compress: false,
yuicompress: true,
optimization: 2
},
files: files
},
production: {
options: {
compress: true,
yuicompress: true,
optimization: 2
},
files: files
}
},
watch: {
styles: {
files: ['media/**/*.less'],
tasks: ['less:development'],
options: {
nospawn: true
}
}
}
});
grunt.loadNpmTasks('grunt-contrib-less');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('default', ['less:development']);
};
任务运行正常,less
没有任何问题。然而,该watch
任务会侦听更改,但在更改时重新编译所有文件。我怀疑这与我设置less
任务的方式有关,因为我希望我的 less 文件列表是动态的,而不是手动添加每个文件。
根据这个答案grunt 应该已经支持这一点,但我不确定如何。