var gulp = require('gulp'), sourcemaps = require('gulp-sourcemaps'), concat = require('gulp-concat'), uglify = require('gulp-uglify'), uglifycss = require('gulp-uglifycss'), rename = require('gulp-rename'), es6 = require('gulp-babel'), order = require('gulp-order'), sass = require('gulp-sass'), merge = require('merge-stream'), removeEmptyLines = require('gulp-remove-empty-lines'), watch = require('gulp-watch'); var assetsPath = 'assets/', publicPath = assetsPath + 'public/', customizerPath = assetsPath + 'customizer/'; var assetPaths = { public: { css: [], sass: [ 'assets/public/scss/**' ], js: [ 'assets/vendor/jquery-ias/js/extension/**', 'assets/vendor/jquery-ias/js/callbacks.js', 'assets/vendor/jquery-ias/js/jquery-ias.js', ], es6: [ 'assets/public/es6/**' ], fonts: [ 'assets/vendor/font-awesome/fonts/**' ] }, customizer: { es6: [ 'assets/customizer/es6/**' ], } }; gulp.task('public-css', function() { var cssStream = gulp.src(assetPaths.public.css) .pipe(concat('css-files.css')) ; var sassStream = gulp.src(assetPaths.public.sass) .pipe(sass()) .pipe(concat('sass-files.scss')) ; return merge(cssStream, sassStream) .pipe(order(['css-files.css', 'sass-files.scss'])) .pipe(concat('style.css')) .pipe(removeEmptyLines()) .pipe(sourcemaps.write('./')) .pipe(gulp.dest(publicPath + 'dist/css/')) .pipe(rename({ suffix: '.min' })) .pipe(uglifycss()) .pipe(gulp.dest(publicPath + 'dist/css/')) ; }); gulp.task('public-js', function () { var jsStream = gulp.src(assetPaths.public.js) .pipe(concat('js-files.js')) ; var es6Stream = gulp.src(assetPaths.public.es6) .pipe(es6()) .pipe(concat('es6-files.js')) ; return merge(jsStream, es6Stream) .pipe(order(['js-files.js', 'es6-files.js'])) .pipe(concat('script.js')) .pipe(gulp.dest(publicPath + 'dist/js/')) .pipe(rename({ suffix: '.min' })) .pipe(uglify()) .pipe(gulp.dest(publicPath + 'dist/js/')) ; }); gulp.task('customizer-js', function () { var es6Stream = gulp.src(assetPaths.customizer.es6) .pipe(es6()) .pipe(concat('es6-files.js')) ; return merge(es6Stream) .pipe(order(['es6-files.js'])) .pipe(concat('customizer.js')) .pipe(gulp.dest(customizerPath + 'dist/js/')) .pipe(rename({ suffix: '.min' })) .pipe(uglify()) .pipe(gulp.dest(customizerPath + 'dist/js/')) ; }); gulp.task('public-fonts', function() { return gulp.src(assetPaths.public.fonts) .pipe(gulp.dest(publicPath + 'dist/fonts/')) ; }); gulp.task('public-watch', function() { gulp.watch(assetPaths.public.css, ['public-css']); gulp.watch(assetPaths.public.sass, ['public-css']); gulp.watch(assetPaths.public.js, ['public-js']); gulp.watch(assetPaths.public.es6, ['public-js']); gulp.watch(assetPaths.public.fonts, ['public-fonts']); }); gulp.task('customizer-watch', function() { gulp.watch(assetPaths.customizer.es6, ['customizer-js']); }); gulp.task('default', ['public-css', 'public-js', 'public-fonts', 'customizer-js']); gulp.task('watch', ['default', 'public-watch', 'customizer-watch']);