Gulp 4.0 взять старый файл в трубе

Я использую Gulp 4.0, и у меня есть gulpfile, где есть 2 задачи:

const cacheBuster = (done) => {
if(env.production) {
    gulp.src('../src/views/partials/_head.html', {base: './'})
        .pipe(gulp_cachebust({
            type: 'timestamp'
        }))
        .pipe(gulp_debug())
        .pipe(gulp.dest('./'))
        .pipe(gulp_notify('✅ - Cache busted'))

        done()
        // fs.readFile('../src/views/partials/_head.html','utf8', 
        //   (err,data) => {
        //     console.log(data)
        //     done()
        // })
    }
    else {
        gulp_util.log('No need cache bust') 
        done()
    }
}

const compileViews = (done) => {
    gulp.src(config.src)
        .pipe(gulp_plumber({
            errorHandler: gulp_notify.onError({
                title:'❌ - Error in compiling views',
                message:'<%= error.message %>'
            })
        }))
        .pipe(gulp_fileinclude({
            prefix: '@@',
            basepath: '@file'
        }))
        .pipe(gulp_debug())
        .pipe(gulp.dest(config.dest))
        .pipe(gulp_notify('✅ - Views updated'))

   done()
}



gulp.task('views', gulp.series(cacheBuster, compileViews));
  • тот, который принимает мой частичный _header.html сделать сброс кеша для ссылки на ресурсы (css / js), добавив временную метку к ссылке на файл
  • тот, который компилирует страницы и партиалы для создания index.html и другие страницы.

Эти два такта находятся в gulp.series, которые запускаются задачей views, которая обычно выполняется в последовательности

[11:57:36] Starting 'views'...
[11:57:36] Finished 'styles' after 8.17 ms
[11:57:36] Starting 'cacheBuster'...
[11:57:36] Finished 'cacheBuster' after 3.15 ms
[11:57:36] Starting 'compileViews'...
[11:57:36] Finished 'compileViews' after 2.88 ms
[11:57:36] Finished 'views' after 15 ms

Однако в качестве первой задачи для src и dest используется один и тот же файл. _header.html, время воссоздания с новой отметкой времени, другая задача по-прежнему принимает предыдущий файл

Для отладки я fs.readFile файл в конце первой задачи, и он печатает старую версию.

Единственное решение в настоящее время setTimeout из done() Перезвоните

Есть идеи сделать это правильно?

большое спасибо

0 ответов

Другие вопросы по тегам