Gulp & Usemin
/* jshint node: true */
var gulp = require('gulp');
var plumber = require('gulp-plumber');
var path = 'app/';
// Common
var less = require('gulp-less');
function compileLess() {
return gulp.src(path + 'styles/main.less')
.pipe(plumber())
.pipe(less({
paths: [path + 'styles'],
}))
.pipe(gulp.dest('./tmp/styles'));
}
// Dev
var livereload = require('gulp-livereload');
var gprint = require('gulp-print');
var watch = require('gulp-watch');
gulp.task('less', function() {
return compileLess();
});
gulp.task('default', ['less'], function() {
gulp.watch(path + 'styles/*.less', ['less']);
watch({glob: '{' + path + ',.tmp}/**/*.{css,js,html}', emitOnGlob: false}, function(files) {
return files
.pipe(gprint())
.pipe(livereload());
});
});
// Build dist
var clean = require('gulp-clean');
var usemin = require('gulp-usemin');
var uglify = require('gulp-uglify');
var ngmin = require('gulp-ngmin');
var minifyHtml = require('gulp-minify-html');
var rev = require('gulp-rev');
var sourcemaps = require('gulp-sourcemaps');
gulp.task('clean', function() {
return gulp.src('build/', {read: false}).pipe(clean());
});
gulp.task('less:dist', ['clean'], function() {
return compileLess();
});
gulp.task('copy:dist', ['clean'], function() {
return gulp.src('app/components/font-awesome/fonts/*', {base: 'app/'})
.pipe(gulp.dest('build/'));
});
gulp.task('build', ['clean', 'less:dist', 'copy:dist'], function() {
return gulp.src(path + '{views/**/*,*}.html')
.pipe(usemin({
css: [rev()],
html: [minifyHtml({empty: true})],
vendorjs: [sourcemaps.init(), uglify(), rev(), sourcemaps.write('.')],
js: [sourcemaps.init(), ngmin(), uglify(), rev(), sourcemaps.write('.')],
}))
.pipe(gulp.dest('build/'));
});