При компиляции в Gulp 4 scss создает пустой файл css, но sass компилируется правильно

Я установил gulp@4.0.0, gulp-sass@4.0.2 и последнюю версию gulp-cli в Windows

Когда я устанавливаю путь для src() для поиска 'assets/css/src/**/*.sass' файлы для создания потока, он правильно компилирует sass в css.

Но когда я пытаюсь сделать это с 'assets/css/src/**/*.scss' файлы, он создает соответствующий файл.css, но пустой.

Когда я помещаю намеренно ошибочный код в .scss file, он выдает ошибку, поэтому gulp-sass действительно проходит через файл.scss, но не выводит буфер в код css.

Даже когда я запускаю node-sass вручную для компиляции скрипта, он вызывает ту же проблему, поэтому он может быть связан с node-sass как компилятор.

примечание: синтаксис для.scss и.sass правильный, и используются правильные расширения.

Это мой gulpfile.js:

var gulp = require("gulp");
var sass = require("gulp-sass");


let paths = {
    css : {
        src  : 'assets/css/src/**/*.scss',
        dest : 'assets/css/dist'           
    }
};


function style() { 

    return (
        gulp
            .src(paths.css.src)
            .pipe(sass())
            .on("error", sass.logError)
            .pipe(gulp.dest(paths.css.dest))
    );
}


// $ gulp style
exports.style = style;

2 ответа

Решение

Решено: Оказывается, что был прокомментирован только блок стиля, у которого было какое-то свойство, в результате чего файл.scss вернул пустой вывод, и sass не скомпилирует пустые блоки.

Может ли это быть, когда вы измените расширение файла на .scss содержание все еще использует синтаксис с отступом старого стиля.

Синтаксис с отступом .SASS

body
    background-color: red;

    h1
        font-size: 2.5rem;

Синтаксис .SCSS

body {
    background-color: red;

    h1 {
        font-size: 2.5rem;
    }
}

Убедитесь, что вы используете правильный синтаксис для каждого расширения.

Вы можете прочитать больше о Sass Indented Syntax и разнице между SASS и SCSS.

Другие вопросы по тегам