2015-12-16 6 views
0

При использовании grunt-watch при редактировании моих файлов SASS, если я получаю ошибку SASS, мне нужно сэкономить дважды после исправления ошибки, чтобы она была разрешена. Вот последовательность событий:Grunt Watch: нужно сохранить дважды после каждой ошибки SASS

  1. включает подмешать, который не существует в моем файле SASS и сохранить
  2. grunt-watch бросков ошибки SASS
  3. исправить ошибку и сохранить
  4. grunt-watch бросают та же ошибка
  5. сохранить я снова
  6. grunt-watch компилирует правильно

Вот мой Gruntfile.js:

module.exports = function(grunt) { 

    // Configuration 
    grunt.initConfig({ 
     pkg: grunt.file.readJSON('package.json'), 

     imagemin: { 
      dynamic: { 
       files: [{ 
        expand: true, 
        cwd: 'assets/img', 
        src: ['assets/img/**/*.{png,jpg,gif}'], 
        dest: 'assets/img' 
       }] 
      } 
     }, 
     sass: { 
      dist: { 
       options: { 
       loadPath: require('node-neat').includePaths, 
       style: 'compact', 
       lineNumbers: true, 
       cacheLocation: 'assets/sass/.sass-cache' 
       }, 
       files: [{ 
       expand: true, 
       cwd: 'assets/sass', 
       src: ['*.scss'], 
       dest: 'assets/css', 
       ext: '.css' 
       }] 
      } 
      }, 
     watch: { 
      options: { 
       livereload: true 
      }, 
      css: { 
       files: ['assets/sass/**/*.scss'], 
       tasks: ['newer:sass'], 
       options: { 
        spawn: false 
       } 
      }, 
      images: { 
       files: ['assets/img/**/*.{png,jpg,gif}'], 
       tasks: ['imagemin'], 
       options: { 
        spawn: false 
       } 
      }, 
      js: { 
       files: ['assets/js/**/*.js'], 
       options: { 
        spawn: false 
       } 
      }, 
      html: { 
       files: ['*.html'], 
       options: { 
        spawn: false 
       } 
      }, 
      php: { 
       files:['**/*.php'], 
       options: { 
        spawn: false 
       } 
      } 
     } 

    }); 

    // List plugins we're using 
    grunt.loadNpmTasks('grunt-contrib-watch'); // Watch - http://goo.gl/yxNE0 
    grunt.loadNpmTasks('grunt-contrib-imagemin'); // Image Minify - http://goo.gl/mkIRPE 
    grunt.loadNpmTasks('grunt-contrib-sass'); // SASS - http://goo.gl/pCHySn 
    grunt.loadNpmTasks('grunt-newer'); // Newer - https://goo.gl/3vBTnf 

    // Plugins to run when we run the 'grunt' command 
    grunt.registerTask('default', [ 
     'imagemin', 
     'sass' 
    ]); 

}; 

ответ

0

Оказывается, что таинственный spawn вариант в Watch фактически должен быть установлен в true для этого конкретного экземпляра. Как и большинство людей, я действительно не знаю, как работает spawn, но это исправляет проблему.

watch: { 
     css: { 
      files: ['assets/sass/**/*.scss'], 
      tasks: ['newer:sass'], 
      options: { 
       spawn: true 
      } 
     } 
    } 

Вы не должны явно установить опцию true, он установлен по умолчанию, так что вы можете просто не добавлять его вообще. Я просто включил его здесь в качестве примера.