'use strict'; var fs = require('fs'), gulp = require('gulp'), lazypipe = require('lazypipe'), footer = require('gulp-footer'), sourcemaps = require('gulp-sourcemaps'), rev = require('gulp-rev'), htmlmin = require('gulp-htmlmin'), ngAnnotate = require('gulp-ng-annotate'), prefix = require('gulp-autoprefixer'), cssnano = require('gulp-cssnano'), uglify = require('gulp-uglify'), useref = require("gulp-useref"), revReplace = require("gulp-rev-replace"), plumber = require('gulp-plumber'), gulpIf = require('gulp-if'), handleErrors = require('./handle-errors'); var config = require('./config'); var initTask = lazypipe() .pipe(sourcemaps.init); var jsTask = lazypipe() .pipe(ngAnnotate) .pipe(uglify); var cssTask = lazypipe() .pipe(prefix) .pipe(cssnano); module.exports = function() { var templates = fs.readFileSync(config.tmp + '/templates.js'); var manifest = gulp.src(config.revManifest); return gulp.src([config.app + '**/*.html', '!' + config.app + 'app/**/*.html', '!' + config.app + 'swagger-ui/**/*', '!' + config.bower + '**/*.html']) .pipe(plumber({errorHandler: handleErrors})) //init sourcemaps and prepend semicolon .pipe(useref({}, initTask)) //append html templates .pipe(gulpIf('**/app.js', footer(templates))) .pipe(gulpIf('*.js', jsTask())) .pipe(gulpIf('*.css', cssTask())) .pipe(gulpIf('*.html', htmlmin({collapseWhitespace: true}))) .pipe(gulpIf('**/*.!(html)', rev())) .pipe(revReplace({manifest: manifest})) .pipe(sourcemaps.write('.')) .pipe(gulp.dest(config.dist)); };