Your IP : 216.73.216.170


Current Path : /home/bitrix/ext_www/vebmarket.yacl.site/
Upload File :
Current File : /home/bitrix/ext_www/vebmarket.yacl.site/gulpfile.js

/* COMMON
-------------------------------------------------- */
var
  gulp = require('gulp'),

  // utils
  browserSync = require('browser-sync'),
  flatten = require('gulp-flatten'),
  gutil = require('gulp-util'),
  merge = require('merge-stream'),
  rename = require('gulp-rename'),

  // css
  less = require('gulp-less'),
  gcmq = require('gulp-group-css-media-queries'),
  autoprefix = require('less-plugin-autoprefix'),
  glob = require('less-plugin-glob'),
  csscomb = require('gulp-csscomb'),
  cssnano = require('gulp-cssnano'),

  // js
  uglify = require('gulp-uglify'),
  concat = require('gulp-concat'),

  // tpl
  pug = require('gulp-pug'),

  // backup
  revall = require('gulp-rev-all'),
  archiver = require('gulp-archiver');

/* TASKS
-------------------------------------------------- */
/* Browser */
gulp.task('browser', function () {
  return browserSync({
    server: {
      baseDir: './build/',
      directory: true
    },
    notify: false
  });
});

/* Templates */
gulp.task('templates', function () {
  return gulp.src([
      'src/templates/**/*',
      '!src/templates/blocks/*'
    ], {
      base: '.'
    })
    .pipe(pug({
      pretty: true
    }))
    .on('error', gutil.log)
    .pipe(flatten())
    .pipe(gulp.dest('build/'))
    .pipe(browserSync.reload({
      stream: true
    }));
});

/* Styles */
gulp.task('css', function () {
  return gulp.src('src/assets/css/general.less', {
      base: '.'
    })
    .pipe(less({
      plugins: [
        new autoprefix({
          browsers: ['last 3 version', 'ie 10']
        }),
        glob
      ],
      compress: false
    }))
    .on('error', gutil.log)
    .pipe(gcmq())
    .pipe(csscomb())
    .pipe(flatten())
    .pipe(gulp.dest('build/assets/css/'))
    .pipe(rename({
      suffix: '.min'
    }))
    .pipe(cssnano({
      zindex: false
    }))
    .pipe(gulp.dest('build/assets/css/'))
    .pipe(browserSync.reload({
      stream: true
    }));
});

/* Fonts */
gulp.task('font', function () {
  return gulp.src('src/assets/font/**/*', {
      base: './src/assets/font/'
    })
    .pipe(gulp.dest('build/assets/font/'))
    .pipe(browserSync.reload({
      stream: true
    }));
});

/* Images */
gulp.task('img', function () {
  return gulp.src('src/assets/img/**/*', {
      base: './src/assets/img/'
    })
    .pipe(gulp.dest('build/assets/img/'))
    .pipe(browserSync.reload({
      stream: true
    }));
});

/* Scripts */
gulp.task('js:common', function () {
  return gulp.src('src/assets/js/common.js', {
      base: './src/assets/js/'
    })
    .pipe(gulp.dest('build/assets/js/'))
    .pipe(uglify())
    .pipe(rename({
      suffix: '.min'
    }))
    .pipe(gulp.dest('build/assets/js/'));
});

/* Scripts */
gulp.task('js:bundle', function () {
  return gulp.src([
      'src/assets/js/vendor/**/*.js',
      '!src/assets/js/vendor/**/_*.js'
    ], {
      base: '.'
    })
    .pipe(concat('bundle.min.js'))
    .pipe(uglify())
    .pipe(gulp.dest('build/assets/js/'));
});

gulp.task('js:all', ['js:bundle', 'js:common']);

/* Backup */
gulp.task('backup', function () {
  var path = require('path');
  var package = path.parse(__dirname);

  return gulp.src([
      'src/**/*',
      'build/**/*',
      '.csscomb.json',
      '.gitignore',
      'gulpfile.js',
      'package.json',
      'README.md'
    ], {
      base: '.'
    })
    .pipe(archiver(package.name + '.zip'))
    .pipe(revall.revision({
      transformFilename: function (file, hash) {
        function addZero(number) {
          return number < 10 ? '0' + number : '' + number;
        }

        var date = new Date();
        var day = addZero(date.getDate());
        var month = addZero(date.getMonth() + 1);
        var year = date.getFullYear();
        var hours = addZero(date.getHours());
        var minutes = addZero(date.getMinutes());
        return package.name + '.' + year + '.' + month + '.' + day + '_' + hours + '.' + minutes + '.zip';
      }
    }))
    .pipe(gulp.dest('backup/'));
});

/* Common */
gulp.task('build', ['templates', 'css', 'img', 'font', 'js:all'], function () {
  gutil.log('Project building done!');
});

gulp.task('default', ['browser'], function () {
  gulp.watch('src/templates/**/*', ['templates']);
  gulp.watch('src/assets/css/**/*', ['css']);
  gulp.watch('src/assets/img/**/*', ['img']);
  // gulp.watch('src/assets/font/**/*', ['font']);
  gulp.watch('src/assets/js/**/*', ['js:all']);

  gutil.log('Project is running!');
});