У меня есть задача gulp, которая использует потоки для записи пересмотренного файла (с использованием gulp-rev) и другой задачи, которая использует ранее написанный файл манифеста для замены переменных в html-файле.Задача Gulp не дожидаться завершения предыдущей задачи
Моя первая задача:
gulp.task('scripts', function() {
// other stuff...
var b = browserify(mainscript);
b.external('External')
.transform(babelify)
.bundle()
.pipe(source('app.js'))
.pipe(buffer())
.pipe(rev())
.pipe(gulp.dest(dest))
.pipe(rev.manifest({
path: 'appjs-manifest.json'
}))
.pipe(gulp.dest(dest))
}
предыдущей задачи, запишет файл с именем что-то вроде 'приложение-34f01b9d.js' и файл манифеста 'appjs-manifest.json', содержащий:
{
"app.js": "app-34f01b9d.js"
}
Моя вторая задача, теоретически, должен ждать завершения первой задачи перед запуском:
gulp.task('renameindex',['scripts'], function() {
var paths = gulp.paths;
var jsonContent = JSON.parse(fs.readFileSync(paths.buildDest+'/public/scripts/appjs-manifest.json', 'utf8'));
var src=paths.srcDir+"/index.hbs";
var appjs=jsonContent["app.js"];
console.log("app.js",appjs)
return gulp.src(src)
.pipe(handlebars({appjs:appjs}, null))
.pipe(rename('index.html'))
.pipe(gulp.dest(paths.buildDest));
});
Задачи должны прочитать файл манифеста и заменить «app-34f01b9d.js» на переменную {appjs}} в шаблоне дескриптора, создающем файл «index.html».
Что происходит, что Java-файл и файл манифеста написаны правильно, но вторая задача выполняется, не дожидаясь файл манифеста должен быть записан таким образом, захватывая неправильно манифеста содержимое файла (один из предыдущего выполнения).
Спасибо , забыл добавить обратный вызов. – Ronnie