【问题标题】:Regex search with Gulp and log results to console?使用 Gulp 进行正则表达式搜索并将结果记录到控制台?
【发布时间】:2016-05-20 15:45:59
【问题描述】:

我需要在我的 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

【问题讨论】:

    标签: gulp


    【解决方案1】:

    首先,您的正则表达式是错误的。它只会匹配您的@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));
    });
    

    【讨论】:

    • 对于正则表达式,我会使用简单的 ´/@include sprite-.*/g´,因为它更直接。
    猜你喜欢
    • 1970-01-01
    • 2022-11-26
    • 1970-01-01
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    相关资源
    最近更新 更多