@zatupok3000

Не работает корректно gulp-rev, что не так с моим gulp файлом?

Добрый день!

Вот часть моего gulpfile.js

gulp.task('clean', function(){
    del(['static/build/*.min.*'])
});

gulp.task('build-less', function(){
    gulp.src(['static/legacy/**/*.+(css|less)', 'static/less/**/*.+(css|less)'])
        .pipe(postcss([ nested, short, autoprefixer(), cssnano(), cssnext, cssvariables() ]))
        .pipe(concatCSS('main.css'))
        .pipe(rename('styles.min.css'))
        .pipe(rev())
        .pipe(gulp.dest('static/build'))
        .pipe(rev.manifest({
            base: './',
            merge: true // merge with the existing manifest (if one exists)
        }))
        .pipe(gulp.dest('./'));
});

gulp.task('build-legacy-js', function(){
    gulp.src(['static/legacy/**/*.js'])
        .pipe(concat('all.js'))
        .pipe(rename('bundle.min.js'))
        .pipe(rev())
        .pipe(gulp.dest('static/build'))
        .pipe(rev.manifest({
            base: './',
            merge: true // merge with the existing manifest (if one exists)
        }))
        .pipe(gulp.dest('./'));
});

gulp.task('build-scripts-js', function(){
    gulp.src(['static/js/**/*.js'])
        .pipe(concat('all.js'))
        .pipe(rename('scripts.min.js'))
        .pipe(rev())
        .pipe(gulp.dest('static/build'))
        .pipe(rev.manifest({
            base: './',
            merge: true // merge with the existing manifest (if one exists)
        }))
        .pipe(gulp.dest('./'));
});

gulp.task('default', ['clean', 'build-less', 'build-legacy-js', 'build-scripts-js']);

gulp.task('watch', function(){
    gulp.watch('static/less/*.+(css|less)', ['build-less']);
    gulp.watch('static/js/**/*.js', ['build-scripts-js']);
    gulp.watch('static/legacy/**/*.js', ['build-legacy-js']);
});


Проблема в том, что gulp-rev не всегда корректно создает rev-manifest.json, и я не понимаю в чем проблема.
К примеру, внутри rev-manifest.json запросто может быть только

{
  "bundle.min.js": "bundle-af26fd17a0.min.js",
  "scripts.min.js": "scripts-87dd6e8894.min.js"
}


А где styles.min.css?
В build папке он существует, но почему не попал в манифест?

Стоит замеить, что иного (после 2, 3) запусков gulp, rev-manifest.json получается корректным, но это же не дело - 20 раз запускать gulp!

Помогите пожалуйста.
  • Вопрос задан
  • 596 просмотров
Пригласить эксперта
Ответы на вопрос 1
booomerang
@booomerang
Разработчик крутизны
Проблема скорее всего в том, что gulp запускает свои задачи асинхронно, т.е. он не запускает одну за другой, а все сразу, и поэтому merge иногда не проходит правильно. У меня было такое, что rev manifest файл вообще частями записывался. И соответственно был не валидным. Что-то вроде того:
{
  "bundle.min.js": "bundle-af26fd17a0.min.js"
}4hg28f1v.min.js


Проблему решил последовательным выполнением задач, через return у каждой, но есть и другие варианты.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы