缩进的Sass语法不适用于节点sass和gulp-sass

Libsass 2.0将缩进的语法带到了libsass用户,但到目前为止,我一直无法使它与node-sassgulp-sass 。 我有所有的最新版本:

节点sass :0.93
咕噜咕噜 :0.7.2
吞咽 :3.8.2

该设置使用括号语法编译.sass文件甚至.sass文件,但不会编译缩进的语法。 有没有人成功地编译了节点sass和gulp的缩进语法?

我的gulpfile.js

 var gulp = require('gulp'); var sass = require('gulp-sass'); gulp.task('sass', function() { return gulp.src('./sites/all/themes/nsfvb/sass/screen.sass') .pipe(sass({ includePaths: require('node-neat').includePaths, errLogToConsole: true } )) .pipe(gulp.dest('./sites/all/themes/nsfvb/css')); }); gulp.task('watch', function() { gulp.watch('./sites/all/themes/nsfvb/sass/*.sass', ['sass']); }); gulp.task('default', ['sass', 'watch']); 

运行默认任务时出错

error: invalid top-level expression

更新回答:

如果要使用缩进语法(.sass)作为顶层文件,请使用sass({indentedSyntax:true})。

 sass({indentedSyntax: true}) 

过时的答案

在这里find答案: https : //github.com/dlmanning/gulp-sass/issues/55#issuecomment-50882250

使用默认设置编译sass文件不起作用。 但是有一个解决方法。 如果你传递sourceComments:“normal”作为编译工作的参数。 原因是有一个奇怪的情况改变了文件的处理方式: https : //github.com/dlmanning/gulp-sass/blob/master/index.js#L23-L27

代码示例在这里find: https : //github.com/chrisdl/gulp-libsass-example/blob/master/gulpfile.js

 var gulp = require('gulp'); var sass = require('gulp-sass'); // Run with "> gulp sass" in terminal. gulp.task('sass', function () { gulp.src('./sass/main.sass') .pipe(sass({sourceComments: 'normal'})) .pipe(gulp.dest('./css')); }); 

注意

如果您遇到使用此代码段的问题,请查看以下报价和问题。

使用这个解决方法将导致从早先在吞吐pipe道(例如较早的插件)中的文件内容的任何改变被丢弃 – JMM

https://github.com/dlmanning/gulp-sass/issues/158

只是为了更新这个答案, gulp-sass的文档现在说:

如果要使用缩进语法(.sass)作为顶层文件,请使用sass({indentedSyntax: true}) indentedSyntax sass({indentedSyntax: true})