Gulp4编译SCS会创建空css文件,但sass编译正确

Gulp4编译SCS会创建空css文件,但sass编译正确,css,sass,gulp,gulp-sass,node-sass,Css,Sass,Gulp,Gulp Sass,Node Sass,我已经安装了gulp@4.0.0,然后大口吞下-sass@4.0.2,以及Windows中最新的gulp cli 当我将src()的路径设置为查找'assets/css/src/***.sass'文件以创建流时,它会将sass正确编译为css 但是,当我尝试使用'assets/css/src/***.scss'文件执行此操作时,它会创建相应的.css文件,但该文件是空的 当我在.scss文件中故意插入错误代码时,它会抛出一个错误,因此gulp sass实际上会通过.scss文件,但不会将缓冲区输

我已经安装了gulp@4.0.0,然后大口吞下-sass@4.0.2,以及Windows中最新的gulp cli

当我将src()的路径设置为查找
'assets/css/src/***.sass'
文件以创建流时,它会将sass正确编译为css

但是,当我尝试使用
'assets/css/src/***.scss'
文件执行此操作时,它会创建相应的.css文件,但该文件是空的

当我在
.scss
文件中故意插入错误代码时,它会抛出一个错误,因此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;

可能是当您将文件扩展名更改为
.scss
时,内容仍然使用旧式缩进语法

.SASS缩进语法

body
    background-color: red;

    h1
        font-size: 2.5rem;
.SCSS语法

body {
    background-color: red;

    h1 {
        font-size: 2.5rem;
    }
}
确保每个扩展都使用了正确的语法


您可以阅读更多关于和解决

之间的差异的内容:结果表明,只有具有某些属性的样式块被注释,从而导致.scss文件返回空输出,而sass不会编译空块

您可以尝试删除return语句中的括号。@谢谢,但这没有任何影响。正如我所提到的,当我为.sass文件而不是.scss文件流设置路径时,它会正确编译,但是.scss返回空缓冲区尝试将'dist'目录移动到'assets'之外……使'src'和'dest'位于不同的位置。我通常在根目录上创建“source”和“public”(dist)目录。@Shakespear,我以前尝试过,它生成相同的issueThanks,但我使用了正确的语法和正确的扩展名。在进一步测试时,我尝试手动运行节点sass编译,但问题似乎缩小到节点sass。换句话说,《关于答案》中的建议不是问题。无论如何,谢谢你的努力。