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

时间:2014-06-24 22:56:30

标签: css node.js sass gulp

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

node-sass :0.93
gulp-sass :0.7.2
gulp :3.8.2

此设置使用括号语法编译.scss个文件甚至.sass个文件,但不会编译缩进语法。有没有人用node-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

2 个答案:

答案 0 :(得分:14)

更新回答:

  

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

sass({indentedSyntax: true})

过时的答案

在此处找到答案:https://github.com/dlmanning/gulp-sass/issues/55#issuecomment-50882250

  

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

此处的代码示例: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'));
});

注意

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

  

使用此变通方法将导致对gulp管道中较早的文件内容进行任何更改(例如,早期的插件) - JMM

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

答案 1 :(得分:1)

只是为了更新这个答案,documentation for gulp-sass现在说:

  

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