@Haoss
html-верстальщик

Gulp-jade и 50 шаблонов — как ускорить сборку?

Всем привет! галп файл в конце. Столкнулся с проблемой сборки проекта, у которого более 50 шаблонов. Некоторое блоки вынесены в файлы.
Есть 2 таска, на сборку jade, и на запуск default - jade, browser-sync, watch и т.д.
Jade компилит - ну.. минут 20. default запускается за несколько секунд, но... первое изменение в jade также компилит минут 10-20, потом, после первого раза, происходит по плану с задержкой 3000 мс. Но начальный запуск это долго.

Как все это ускорить, разбить на несколько, уменьшив количество шаблонов не вариант.

"use strict";

var gulp = require('gulp'),
  browserSync = require('browser-sync'),
  sass = require('gulp-sass'),
  uncss = require('gulp-uncss'),
  autoprefixer = require('gulp-autoprefixer'),
  sourcemaps = require('gulp-sourcemaps'),
  rename = require("gulp-rename"),
  plumber = require('gulp-plumber'),
  buffer = require('vinyl-buffer'),
  merge = require('merge-stream'),
  fs = require('fs'),
  cheerio = require('gulp-cheerio'),
  jadeInheritance = require('gulp-jade-inheritance'),
  jade = require('gulp-jade'),
  changed = require('gulp-changed'),
  cached = require('gulp-cached'),
  gulpif = require('gulp-if'),
  filter = require('gulp-filter');

var plugins = require("gulp-load-plugins")();

gulp.task('sass', function() {
  gulp.src('./sass/main.sass')
    .pipe(plumber())
    .pipe(plugins.sourcemaps.init())
    .pipe(sass({
        includePaths: ['./dist/css/'],
        onError: browserSync.notify
    }))
    .pipe(autoprefixer({
      browsers: ['last 2 versions'],
      cascade: true
    }))
    // .pipe(uncss({
    //    html: ['*.html']
    // }))
    .pipe(plugins.sourcemaps.write("./"))
    .pipe(gulp.dest('./dist/css/'))
    .pipe(browserSync.reload({stream:true}));
});

gulp.task('skin-sass', function() {
  gulp.src('./sass/skin/*.sass')
    .pipe(plumber())
    .pipe(plugins.sourcemaps.init())
    .pipe(sass({
        includePaths: ['./dist/css/skin/'],
        onError: browserSync.notify
    }))
    .pipe(autoprefixer({
      browsers: ['last 2 versions'],
      cascade: true
    }))
    // .pipe(uncss({
    //    html: ['*.html']
    // }))
    .pipe(plugins.sourcemaps.write("./"))
    .pipe(gulp.dest('./dist/css/skin/'))
    .pipe(browserSync.reload({stream:true}));
});

// jade
gulp.task('jade', function() {
  gulp.src('./jade/**/*.jade')
    .pipe(changed('./dist/', {extension: '.html'}))
    .pipe(gulpif(global.isWatching, cached('jade')))
    .pipe(jadeInheritance({basedir: './jade/'}))
    .pipe(filter(function (file) {
      return !/\/_/.test(file.path) && !/^_/.test(file.relative);
    }))
    .pipe(plumber())
    .pipe(jade({
      pretty: '    '
    }))
    .pipe(gulp.dest('./dist/'))
    .pipe(browserSync.reload({stream:true}));
});

gulp.task('setWatch', function() {
  global.isWatching = true;
});

// Static server
gulp.task('browser-sync', function() {
  browserSync.init({
    server: {
      baseDir: "./"
    },
    notify: false,
    reloadDelay: 3000
  });
});

gulp.task('js', function(){
  gulp.src('./dist/**/*.js')
    .pipe(browserSync.reload({stream:true}))
});

gulp.task('watch', ['setWatch'], function () {
  gulp.watch('./sass/**/*.sass', ['sass']);
  gulp.watch('./sass/skin/*.sass', ['skin-sass']);
  gulp.watch('./jade/**/*.jade', ['jade']);
  gulp.watch('./dist/**/*.js', ['js']);
});

gulp.task('default', ['browser-sync','watch']);
  • Вопрос задан
  • 2462 просмотра
Пригласить эксперта
Ответы на вопрос 4
lavezzi1
@lavezzi1
Я юзаю tars сборку. У меня сейчас около 200 шаблонов (блоков) компилит 25секунд. Попробуйте https://github.com/tars/tars
Ответ написан
abyrkov
@abyrkov
JavaScripter
Сжатие не катит?
Ответ написан
Комментировать
Zoxon
@Zoxon
Веб-разработчик
Комментировать
@Haoss Автор вопроса
html-верстальщик
он есть выше в моем посте, это не решение
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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