0

我正在使用 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 输出显示处理的模板文件夹中的 5 个文件

显示 6 个文件的模板文件夹的文件夹内容

这是替换文件上的文本。即,当替换完成时,它们会被保存回同一个地方。如果我将输出位置设置为不同,它们都会被替换,但它们已经在我需要它们所在的位置。

为什么最后一个文件丢失了?

谢谢

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

4

1 回答 1

2

基本上,您的所有任务都错误地发出异步完成信号。对于每项任务,您应该执行以下两项之一:

  • 如果您使用的是流,请从任务函数中返回它
  • 如果您不使用流,请调用回调函数

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

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

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