每次我对其中一个文件进行更改时,我都会尝试让Grunt处理我较少的文件。
我有一个“监视”任务正在运行,并且它表示在我进行更改时正在处理文件,并且它会输出正确的文件,这些文件会发生变化,因此我的手表正在运行,但我所做的更改并未在css文件。
我的文件结构是这样的
-styles globals.less components.less -menu menu.less -header header.less
components.less
文件是一组较少的mixin来抓取其他.less文件,例如@import "menu/menu.less";
在我的grunt文件中,我有
less: { development: { options: { paths: ['./app/vendor/modern-touch-less','./app/styles'] }, files: { './app/styles/modern-touch.css':'./app/vendor/modern-touch-less/style.less', './app/styles/components.css':'./app/styles/components.less' } } }, watch: { js: { files: ['/scripts/{,*/}*.js','/styles/{,*/}*.less'], tasks: ['newer:jshint:all, less'], options: { livereload: true } }, styles: { files: ['./styles/{,*/}*.*','./vendor/{,*/}*.less'], tasks: ['less','newer:copy:styles', 'autoprefixer'], options: { nospawn: true, livereload: true } }, }
首次启动应用时,较少的文件内置于正确的components.css
文件中,但更改文件后,components.css
文件未更新。
Grunt以
开头grunt.task.run([ 'clean:server', 'bower-install', 'concurrent:server', 'less', 'autoprefixer', 'connect:livereload', 'watch', 'karma' ]);
答案 0 :(得分:3)
也许您可以尝试简化配置,将任务拆分为在适当的文件集上运行。
watch: {
js: {
files: ['/scripts/{,*/}*.js'],
tasks: ['newer:jshint:all'],
options: {
livereload: true
}
},
styles: {
files: ['./styles/{,*/}*.*','./vendor/{,*/}*.less'],
tasks: ['less','newer:copy:styles', 'autoprefixer'],
options: {
nospawn: true,
livereload: true
}
},
}
在原始观看配置中,watch.js.tasks array
为['newer:jshint:all, less']
,看起来像拼写错误,应为['newer:jshint:all', 'less']
。这也可以解决问题,但我会考虑只对他们受影响的文件运行任务。