Я хочу иметь gruntfile с 2 задачами: 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
, потому что я хочу, чтобы мой список файлов с меньшим количеством файлов был динамическим, а не добавлял каждый файл вручную.
В соответствии с этот ответ grunt уже должен поддерживать это, но я не уверен, как это сделать.