如何使用gulp以多种方式处理一个src文件?

时间:2014-05-16 15:46:35

标签: gulp

我想使用一个源文件生成具有不同特征的多个目标文件。这是我想要做的一个淡化版本:

gulp.task('build', function() {
  var src = gulp.src('myfile.txt')

  for (var i = 0; i < 10; i++) {
    src
      .pipe(someplugin(i))
      .pipe(rename('myfile-' + i + '.txt'))
      .dest('./build')
  }
});

据推测,&#34; someplugin&#34;将根据传递给它的索引更改文件内容,因此上面的代码将生成10个文件,每个文件的内容略有不同。

这不起作用,我没想到,但还有其他方法可以实现吗?

2 个答案:

答案 0 :(得分:2)

我最终创建了一个为我构建任务的函数。这是一个例子:

function taskBuilder(i) {
  return function() {
    gulp.src('*.mustache')
      .pipe(someplugin(i))
      .pipe(rename('myfile-' + i + '.txt'))
      .dest('./build');
  };
}

var tasks, task, i;
for (i = 0; i < 10; i++) {
  taskName = 'tasks-' + i;
  gulp.task(taskName, taskBuilder(i));
  tasks.push(task);
}

gulp.task('default', tasks);

答案 1 :(得分:1)

也许你应该检查一下:

How to save a stream into multiple destinations with Gulp.js?

如果它没有回答你的问题,我相信一个简单的解决方案就是让许多任务一个接一个地运行。例如:

gulp.task('build', function() {
  return gulp.src('*.txt')
      .pipe(someplugin(i))
      .pipe(rename('myfile-1.txt'))
      .dest('./build')
  }
 });

gulp.task('build2', [build], function() {
  return gulp.src('*.txt')
      .pipe(someplugin(i))
      .pipe(rename('myfile-2.txt'))
      .dest('./build')
  }
});

正在运行的任务&#39; build2&#39;将运行&#39; build&#39;首先,然后&#39; build2&#39;什么时候完成。如果你不必等待#build;&#39;要完成,只需删除&#34;返回&#34;他们将在同一时间运行。

相关问题