Your IP : 216.73.216.170
/* 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!');
});