var gulp = require('gulp'), gutil = require('gulp-util'), sass = require('gulp-sass'), jshint = require('gulp-jshint'), stylish = require('jshint-stylish'), uglify = require('gulp-uglify'), concat = require('gulp-concat'), autoprefixer = require('gulp-autoprefixer'), minifyCss = require('gulp-minify-css'), imageMin = require('gulp-imagemin'), clean = require('gulp-clean'), svgmin = require('gulp-svgmin'), cmq = require('gulp-combine-media-queries'); rename = require('gulp-rename'); var settings = { build: './build', source: 'src', umbraco: './../OurUmbraco.Site' }; // Lint js files gulp.task('lint', function() { 'use strict'; gulp.src(settings.source+'/js/*.js') .pipe(jshint()) .pipe(jshint.reporter(stylish)); }); // Minify js files gulp.task('js', function() { 'use strict'; gulp.src([settings.source+'/js/vendor/**/*.js', settings.source+'/js/*.js']) // Mangle is set to false by default. // By disabling mangle, Uglify won't rename // variables, functions etc. // This means that AngularJS apps will be // able to be minified without breaking. // If you aren't using angular, I recommend // enabeling mangle, to obtain better compression. .pipe(uglify({mangle: false})) .pipe(concat('app.min.js')) .on('error', gutil.log) .pipe(gulp.dest(settings.build+'/assets/js')) .pipe(gulp.dest(settings.umbraco+'/assets/js')); }); [settings.source+'/css/**/*.css', settings.source+'/scss/style.scss'] // Compile vendor css and scss gulp.task('css', function () { gulp.src(settings.source + '/scss/*.scss') .pipe(sass()) .on('error', gutil.log) .pipe(autoprefixer('last 1 version', 'ie 9', 'ios 7')) .pipe(cmq({log: true})) .pipe(rename({suffix: '.min'})) .pipe(minifyCss()) .pipe(gulp.dest(settings.build + '/assets/css')) .pipe(gulp.dest(settings.umbraco+'/assets/css')); }); // Optimize images gulp.task('images', function(){ 'use strict'; gulp.src(settings.source+'/images/*.svg') .pipe(svgmin()) .on('error', gutil.log) .pipe(gulp.dest(settings.build+'/assets/images')) .pipe(gulp.dest(settings.umbraco+'/assets/images')); }); // Svg images gulp.task('svg', function() { 'use strict'; gulp.src(settings.source+'/images/*.svg') .pipe(svgmin()) .on('error', gutil.log) .pipe(gulp.dest(settings.build+'/assets/images')) .pipe(gulp.dest(settings.umbraco+'/assets/images')); }); // Default task and watch files gulp.task('default', ['build'], function() { 'use strict'; gulp.watch([settings.source+'/js/vendor/**/*.js', settings.source+'/js/*.js'], ['lint', 'js']); gulp.watch([settings.source+'/scss/**/*.scss', settings.source+'/css/**/*.css'], ['css']); gulp.watch(settings.source+'/images/**', ['images', 'svg']); }); gulp.task('build', ['lint', 'js', 'css', 'images', 'svg']);