具有全局变量的Gulp管道

时间:2018-10-05 12:42:13

标签: gulp pipe tap

在gulp任务中,我需要替换文件中的相同链接。 在我的任务中,我需要:

  • 读取一个目录中的所有文件(即所有* .css文件)
  • 检查文件名中是否包含相同的单词(即分钟)
  • 使用新旧字符串对生成数组
  • 将所有旧字符串替换为新字符串

为此,我将gulp-batch-replace软件包与其他软件包一起使用。
我的想法是在第一个管道中创建一个数组(array是一个全局数组变量),然后将其传递到替换对的下一个管道。 Gloabal数组是通过管道中的点击调用创建的,但是替换不起作用。我认为当我调用管道2时此数组为空。 Tap中的外部呼叫是否异步?谢谢

这是我的代码。

var tap = require('gulp-tap');
var replaceAll = require('gulp-batch-replace');
var path = require('path');

gulp.task('pages', function () {

  var replaceThis = [];
  function replaceFileContent(file) {
    var newFileName = path.basename(file.path).trim();
    var oldFileName = newFileName.includes('.min') ?
      newFileName.replace('.min', '').trim() :
      newFileName.substr(0, newFileName.indexOf('.')) + '.min' + newFileName.substr(newFileName.indexOf('.')).trim();
      replaceThis.push([oldFileName, newFileName]);
      console.log(oldFileName + " ---> " + newFileName);
  }

  gulp.src('site/dist/css/**/*.css')
  .pipe(tap(replaceFileContent))
  .pipe(replaceAll(replaceThis))
  .pipe(gulp.dest('./site/dist/'));

  console.log("end");

});

0 个答案:

没有答案