gulp-replace仅替换文件夹中某些文件中的文本

时间:2016-05-06 11:09:10

标签: gulp gulp-replace

我正在使用gulp replace用我的package.json文件中的版本号替换字符串,如下所示:

gulp.task('replace', ['uglify','process-html','copy-release'], function () {
    return gulp.src([releaseFolder + '/**/*.html',releaseFolder + '/app.js'])
            .pipe( debug({title:"replace files"}))
           .pipe(replace( "__applicationVersionNumber__", packageJson.version ))
           .pipe(gulp.dest(releaseFolder));
});

这适用于releaseFolder / tempaltes / * .html中的6个文件,其中只有5个被替换:

grunt output showing 5 files in the templates folder processed

folder contents of templates folder showing 6 files

这正在替换文件上的文本。即更换完成后,它们会被保存回同一个地方。如果我将输出位置设置为不同,则它们全部被替换,但它们已经位于我需要它们的位置。

为什么错过了最后一个文件?

由于

我的整个gulpFile在这里: https://github.com/Roaders/YouTubeCommentator/blob/3808036d7ce1fa84e035bc01cc765c5dd7a1e008/gulpfile.js

1 个答案:

答案 0 :(得分:2)

基本上所有任务都错误地发出信号async completion。对于每项任务,您应该执行以下两项一次

  • 如果您正在使用流,请从任务功能
  • 返回
  • 如果您没有使用流,请调用回调函数

由于您似乎在所有任务中都使用了流,因此您可以摆脱回调。

例如,您的copy-release任务应如下所示:

gulp.task('copy-release', ['clean'], function () {
  return gulp.src([
      './templates/**/*.html',
      './lib/**/*.js',
      './assets/**/*.*',
      './css/**/*.css'
    ], {base: './'})
    .pipe(gulp.dest(releaseFolder));
});