2015-11-02 78 views
0

我使用grunt-contrib-less和grunt-contrib-watch在更改时自动编译少量文件。 当css不存在时,grunt会编译它。当一个css已经存在,手表看到更少的文件改变,css文件不会被修改。我必须每次删除它,让咕噜重新修改它。Grunt less不会替换css文件

少配置:

less: { 
    options: { 
     banner: '<%= meta.banner %>' 
    }, 
    dev: { 
     options: { 
      sourceMap: true, 
      sourceMapFileInline: true, 
      compress: true 
     }, 
     src: '<%= meta.dev.less %>/main.less', 
     dest: '<%= meta.prod.css %>/main.css' 
    }, 
    prod: { 
     options: { 
      plugins: [ 
       new(require('less-plugin-clean-css'))({ 
        'advanced': true, 
        'compatibility': 'ie9' 
       }) 
      ], 
     }, 
     src: '<%= meta.dev.less %>/main.less', 
     dest: '<%= meta.prod.css %>/main.css' 
    } 
}, 

我的Windows 10和每一个用户下我不得不modifiy /在我的DIST文件夹中删除的文件的权限。 我该如何让grunt修改css文件?

编辑

腕表配置

watch: { 
    options: { 
     livereload: 6325 
    }, 
    js: { 
     files: [ '<%= meta.dev.js %>/main.js', '<%= meta.dev.js %>/plugins/*.js' ], 
     tasks: [ 'newer:concat' ] 
    }, 
    images: { 
     files: '<%= meta.dev.img %>/**/*.{png,jpg,gif,svg}', 
     tasks: [ 'newer:imagemin' ] 
    }, 
    css: { 
     files: '<%= meta.dev.less %>/**/*.less', 
     tasks: [ 'newer:less:dev' ] 
    } 
} 

注册

grunt.registerTask('default', [ 'less:dev', 'concat', 'imagemin', 'copy', 'watch' ]); 

咕噜输出(详细)

>> File "dev\less\elements\menu.less" changed. 
Initializing 
Command-line options: --verbose 

Reading "Gruntfile.js" Gruntfile...OK 

Registering Gruntfile tasks. 
Reading package.json...OK 
Parsing package.json...OK 
Initializing config...OK 
Loading "Gruntfile.js" tasks...OK 
+ default, prod 

Running tasks: newer:less:dev 

Loading "grunt-newer" plugin 

Registering "D:\[...]\static\node_modules\grunt-newer\tasks" tasks. 
Loading "newer.js" tasks...OK 
+ any-newer, newer, newer-clean, newer-postrun 

Running "newer:less:dev" (newer) task 
Options: cache="D:\\[...]\\static\\node_modules\\grunt-newer\\.cache", override=undefined 
Files: dev/less/main.less -> dist/css/main.css 
No newer files to process. 

回答

2

这里发生了什么:

  • 修改menu.less
  • 手表检测和运行newer:less:dev
  • less:dev使用文件main.less因为只有源(未menu.less
  • 该文件并没有改变,所以newer得出结论,它不需要再次运行任务

我想main.less包括menu.less,但是newer不知道。 所以我建议的修复方法是摆脱newer部分。

+0

您是对的,如果我在main.less中添加一个css行,它将起作用。所以我摆脱了更新的观察任务,一切都很好。谢谢! – Kodiak

0

你有没有加入正确的腕表配置少?

watch: { 
    less: { 
    files: ['less/**/*.less'], // which files to watch 
    tasks: ['less'], 
    options: { 
     nospawn: true 
    } 
    } 
} 

当您谱运行咕噜:grunt.registerTask( '我的资料',[ '少:开发', '手表']);

+0

嗨,我编辑我的问题与我的gruntfile中的元素。 – Kodiak

+0

您确定livereload正常工作吗?例如,如果你改变一个HTML,看看重新加载它?我不明白什么是“新的”任务。 – Donald

+0

不,我不使用livereload。但手表正常工作时,它会对我更少的文件做出反应,如果不存在,则会更少地创建css文件。 – Kodiak