Sourcemap "sources" 数组链接到“../../stdin”而不是实际的 SCSS 文件

Sourcemap "sources" array links to "../../stdin" instead of actual SCSS file

今天我运行npm update,接下来就是一场灾难。我在安装包时遇到了麻烦,但在一切似乎都在正确的地方之后,我开始了我的 gulp 任务,将我的 SCSS 代码编译成 CSS.

这段代码重现了我的问题:

var gulp = require('gulp'),
    sourcemaps = require('gulp-sourcemaps'),
    sass = require('gulp-sass');

gulp.task('sass', function() {
    gulp.src('www/sass/*.scss')
        .pipe(sourcemaps.init())
            .pipe(sass())
        .pipe(sourcemaps.write('.'))
        .pipe(gulp.dest('www/css'));
});

gulp.task('default', ['sass'], function(){
    gulp.watch('www/sass/*.scss', {debounceDelay: 2000}, ['sass']);
});

在运行这段代码通过gulp default之后,结果是:

www/sass/example.scss

#test {
    color: red;
}

www/css/example.css

#test {
  color: red; }

/*# sourceMappingURL=example.css.map */

www/css/example.css.map

{"version":3,"sources":["../../stdin"],"names":[],"mappings":"AAAA,KAAK,CAAC;EACL,KAAK,EAAE,GAAI,GACX","file":"example.css","sourceRoot":"/sass"}

生成的源映射中的 sources 数组包含 "../../stdin/" 而不是 "example.scss"!但是为什么?

这是 node-sass 的错误,已在 gulp-sass 版本 2.1.1 中修复。查看相关问题on Github