Gulp-替换不使用 SCSS

Gulp-replace not working with SCSS

我试过了

gulp.task('sass', function () {
  return gulp.src(['./scss/*.scss'])
        .pipe($.replace(/_VIEWPORT_WIDTH_/g,conf.project.viewport||640))
        .pipe($.sass({errLogToConsole: true}))
        .pipe(gulp.dest('./resources/css/'));
});

仍然无法正常工作。 pipe replace after SCSS 可以工作,但 SCSS 在此过程中不能做数学运算。

gulp.task('sass', function () {
  return gulp.src(['./scss/*.scss'])
    .pipe($.sass({errLogToConsole: true}))
     .pipe($.replace(/_VIEWPORT_WIDTH_/g,conf.project.viewport||640))
    .pipe(gulp.dest('./resources/css/'));
});

有什么建议吗?我知道有一个丑陋的方法,但那太 Grunt

gulp.task('sass', function () {
  return gulp.src(['./scss/*.scss'],{buffer:true})
        .pipe($.replace(/_VIEWPORT_WIDTH_/g,conf.project.viewport||640))
        .pipe(gulp.dest('./tmp/scss/'))
        .pipe($.sass({errLogToConsole: true}))
        .pipe(gulp.dest('./resources/css/')).on('end',function(){
          del(['./tmp/scss/'], {force: true});
        });
});

这是因为 gulp-sass 的最新版本(可能每个以前的版本)都有一个严重的错误/设计缺陷 -- 它丢弃了管道中早期对文件内容的更改。我在 dlmanning/gulp-sass#158 报告了这个问题,我相信它应该在下一个主要版本 (v2) 中得到修复。