使用Gulp进行正则表达式搜索并将结果记录到控制台?

时间:2016-05-20 15:46:00

标签: gulp

我需要在我的SASS中找到某个群组mixins,它总是有这种格式:

@include sprite-something;

我可以用这个正则表达式找到它们:

/@include sprite-*/g

我可以使用gulp查找此模式并将其找到的控制台登录到控制台吗?

所以如果这是我的SASS

.header {
  font-size: 2em;
}
.something {
  @include sprite-one;
}
.something-else {
  @include sprite-two;
}

然后控制台会记录@include sprite-one@include sprite-two

1 个答案:

答案 0 :(得分:0)

首先,你的正则表达式是错误的。它只会与您@include语句的一部分匹配(请参阅here)。一个更好的正则表达式是/@include sprite-[^;]*;/g(见here)。

现在,您可以使用map-stream访问流中的文件,然后使用常规JavaScript正则表达式匹配来查找模式的所有匹配项并将其记录到控制台:

var gulp = require('gulp');
var map = require('map-stream');

function logMatches(regex) {
  return map(function(file, done) {
    file.contents.toString().match(regex).forEach(function(match) {
      console.log(file.path + ': ' + match);
    });
    done(null, file);
  });
}

gulp.task('default', function() {
  return gulp.src('sass/**/*.sass')
    .pipe(logMatches(/@include sprite-[^;]*;/g));
});