我想要有一个gruntfile有2个任务:less(编译所有较少的文件)并观察(监听更改并重新编译更改后的文件)。Grunt只看更改文件
我有以下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
任务有关,因为我希望我的较少文件列表是动态的,而不是手动添加每个文件。
根据this answer grunt应该已经支持这个,但我不确定如何。
不是我真正想要的,虽然不远。所以期望的流程:我改变一个文件,一个文件被编译。当前流程:我更改一个文件,所有文件都会重新编译。通过您的解决方案(第二个),“less:development”任务和“less:app”任务都将运行。另外,我也不想将LESS文件捆绑到一个单独的CSS文件中,我希望保持文件结构相同。 –
我已经复制了您的设置并无法解决难题。你提到的SO指出了在不同项目中提出的两个问题,它们试图解决同样的问题[[1](https://github.com/gruntjs/grunt-contrib-watch/issues/14)]和[[2 ](HTTPS:// github上。com/shama/gaze/issues/14)],但还没有100%解决。此时,我认为“LESS”任务是基于文件夹的,“Compass”任务(用于“SASS”)也是。在“Compass”的情况下,他们甚至在[自述文件]中明确提到它(https://github.com/gruntjs/grunt-contrib-compass)。 –
管理解决它。花了大约3小时,但希望它现在能正常工作。看到我的答案,看看我做了什么。 –