2016-12-18 5 views
0

Да, sass в моем gulpfile ([email protected]) сообщает о многих ошибках (и продолжает следить за часами, как и должно ...), но не ошибки, подобные этим:sass/gulp-sass продолжает молчать об определенных ошибках (недопустимые свойства)

=clearfix() 
    &:after 
     content: "" 
     display: table 
     clear both 

content и display сделать это правильно в реальный класс (где ссылок на них Mixin), но clear нет (потому что я пропустил двоеточие). Это синтаксическая ошибка (так что это не так, как rareproperty: 42px; обработано изящно). → все еще: Ошибок не видно, без перерывов.

Мой глоток задача:

gulp.task('sass', function() { 

    return gulp.src(src.scssMaster) 
     .pipe(plumber()) 
     .pipe(sourcemaps.init()) 
     .pipe( sass({ 
        debugInfo : true, 
        lineNumbers : true, 
        outputStyle: 'expanded' 
       }) 
       .on('error', function(err){ 
        gutil.log(err); // stackoverflow.com/a/30742014/444255 
        this.emit('end'); 
       }) 
      ) 
     .pipe(autoprefixer({ 
      browsers: ['iOS >= 5', 'ie 8', 'Firefox > 2'], 
      cascade: true, 
      remove: true 
     })) 
     .pipe(rename('lznet.css')) 
     .pipe(sourcemaps.write('../maps')) 
     .pipe(gulp.dest(src.cssDir)) 

     .pipe(reload({stream: true})) 
     .on('end',() => gutil.log('sass thing done')); 
}); 

Mille Grazie ❤

ответ

1

Это ошибка синтаксиса → еще: Ошибки не видели, никаких задержек.

Это не синтаксическая ошибка вообще. Возьмем такой пример:

.foo 
    color: blue 
    clear both 

компилируется к следующему CSS:

.foo { 
    color: blue; 
} 

Это, конечно выглядит погрешность ошибочно указанного clear both свойства проигнорирована. Фактически происходит то, что вы определили вложенный селектор .foo clear both. Но так как ваш .foo clear both селектор пуст, он оптимизирован компилятором SASS.

Это становится ясно, когда вы смотрите на то, что происходит с другим примером SASS:

.foo 
    color: blue 
    clear both 
    color: red 

компилируется к следующему CSS:

.foo { 
    color: blue; 
} 
.foo clear both { 
    color: red; 
} 

Теперь селектор .foo clear both не пуст и CSS больше не оптимизируется компилятором.

SASS не знает и не заботится о том, что на самом деле нет элемента clear или both в любых технических характеристиках HTML. Этот признак, но не ошибка:

  • Элементы могут быть добавлены и удалены из HTML. Это сделало бы изменения в SASS необходимыми в любое время, когда будет стандартизирована новая версия HTML.
  • Вы уже можете определить custom HTML elements (хотя в этом случае clear и both не будут действительными именами даже для веб-компонентов).
  • CSS (и поэтому SASS) никоим образом не ограничивается HTML. Вы также можете указать use CSS to style XML documents, который, очевидно, позволит вам определить пользовательские элементы, такие как clear или both.
+0

выдающийся ответ –