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()
Перезвоните
Есть идеи сделать это правильно?
большое спасибо