Current Path : /home/bitrix/ext_www/oldfck.yacl.site/ |
Current File : /home/bitrix/ext_www/oldfck.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!'); });