2015-11-02 5 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?

EDIT

часы конфигурации

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' ]); 

Grunt выход (многословный)

>> 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

Вы правы, если я добавлю строку css в main.less, она работает. Поэтому я избавился от новичка в контрольной задаче, и все в порядке. Спасибо! – Kodiak

0

Вы добавили правильные часы конфигурации меньше?

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

Чтобы запустить хрюкать с профилем: grunt.registerTask ('MyProfile', [ 'меньше: DEV', 'часы']);

+0

Привет, я редактировал свой вопрос с элементами из моего файла grunt. – Kodiak

+0

Вы уверены, что работа с лифтом правильно работает? Например, если вы измените html, часы перезагрузите его? Я не понимаю, что такое «новая» задача. – Donald

+0

Нет, я не использую функцию печени. Но часы работают правильно, реагирует, когда я изменяю меньше файлов и меньше создает файл css, если он не существует. – Kodiak

Смежные вопросы