|  | /*eslint-env node */ | 
|  | /*global require: true, module: true */ | 
|  |  | 
|  | 'use strict'; | 
|  |  | 
|  | var options = require('../gulp-options.js'), gulp = require('gulp'), | 
|  |  | 
|  | // Base dependencies | 
|  | clean = require('gulp-clean'), rename = require('gulp-rename'), | 
|  | util = require('gulp-util'), | 
|  |  | 
|  | // Angular gulp dependencies | 
|  | ngTemplateCache = require('gulp-angular-templatecache'), | 
|  | ngAnnotate = require('gulp-ng-annotate'), | 
|  | ngConstant = require('gulp-ng-constant'), | 
|  |  | 
|  | // Classical gulp dependencies | 
|  | stripDebug = require('gulp-strip-debug'), uglify = require('gulp-uglify'), | 
|  | sass = require('gulp-sass'), cleanCss = require('gulp-clean-css'), | 
|  | rev = require('gulp-rev'), revReplace = require('gulp-rev-replace'), | 
|  | gulpIf = require('gulp-if'), useref = require('gulp-useref'), | 
|  | jsoncombine = require('gulp-jsoncombine'), | 
|  | htmlParser = require('gulp-htmlparser'); | 
|  |  | 
|  |  | 
|  | var runSequence = require('run-sequence'), es = require('event-stream'); | 
|  |  | 
|  | gulp.task('webapp:clean', function() { | 
|  | return gulp | 
|  | .src( | 
|  | [options.targetFolderPath + '/webapp', options.dirname + '/.temp'], | 
|  | {'read': false}) | 
|  | .pipe(clean({'force': true})); | 
|  | }); | 
|  |  | 
|  | gulp.task('webapp:sasscompile', function() { | 
|  | return gulp.src('app/styles/index.scss') | 
|  | .pipe(sass.sync().on('error', util.log)) | 
|  | .pipe(gulp.dest(options.srcFolderPath + '/styles')); | 
|  | }); | 
|  |  | 
|  | // ----- To .temp from app | 
|  | gulp.task('webapp:copyjs', function() { | 
|  | return gulp.src(options.srcFolderPath + '/**/*.js') | 
|  | .pipe(ngAnnotate())  // Check angular dependencies injection | 
|  | .pipe(stripDebug())  // Remove all logs | 
|  | .pipe(uglify({'mangle': false})) | 
|  | .pipe(gulp.dest(options.dirname + '/.temp')); | 
|  | }); | 
|  |  | 
|  | gulp.task('webapp:copyothers', function() { | 
|  | return gulp | 
|  | .src( | 
|  | ['**/*', '!**/*.js', '!**/*.css', '!**/*.scss'], | 
|  | {'cwd': options.srcFolderPath})  // All except JS files | 
|  | .pipe(gulp.dest(options.tempFolderPath)); | 
|  | }); | 
|  |  | 
|  | gulp.task('webapp:copycss', function() { | 
|  | return gulp.src('app/styles/index.css') | 
|  | .pipe(cleanCss()) | 
|  | .pipe(gulp.dest(options.tempFolderPath + '/styles')); | 
|  | }); | 
|  |  | 
|  | gulp.task('webapp:constants', function() { | 
|  | return gulp.src('environment-constants.json') | 
|  | .pipe(ngConstant({'name': 'app.constants', 'deps': false})) | 
|  | .pipe(rename('environment-constants.js')) | 
|  | .pipe(gulp.dest(options.tempFolderPath + '/constants')); | 
|  | }); | 
|  |  | 
|  | // ----- To target/webapp from .temp and bower_components | 
|  | gulp.task('webapp:template', function() { | 
|  | return gulp | 
|  | .src([ | 
|  | options.srcFolderPath + '/**/*.html', | 
|  | '!' + options.srcFolderPath + '/index.html' | 
|  | ]) | 
|  | .pipe(ngTemplateCache( | 
|  | 'templates.js', {'module': 'app.templates', 'standalone': true})) | 
|  | .pipe(gulp.dest(options.tempFolderPath)); | 
|  | }); | 
|  |  | 
|  | gulp.task('webapp:useref', function() { | 
|  | var tasks = ['index.html'].map(function(indexPage) { | 
|  | var assets = useref.assets({}); | 
|  |  | 
|  | return gulp.src(options.tempFolderPath + '/' + indexPage) | 
|  | .pipe(assets) | 
|  | .pipe(assets.restore()) | 
|  | .pipe(useref()) | 
|  | .pipe(revReplace())  // Force useref to apply the 'rev' method | 
|  | .pipe(gulp.dest(options.targetFolderPath + '/webapp')); | 
|  | }); | 
|  |  | 
|  | return es.concat.apply(null, tasks); | 
|  | }); | 
|  |  | 
|  | gulp.task('webapp:copyresources', function() { | 
|  | return gulp | 
|  | .src( | 
|  | ['**/*.*', '!**/*.js', '!**/*.css', '!**/*.html', '!**/*.log'], | 
|  | {'cwd': options.tempFolderPath}) | 
|  | .pipe(gulp.dest(options.targetFolderPath + '/webapp')); | 
|  | }); | 
|  |  | 
|  | module.exports = function(callback) { | 
|  | return runSequence( | 
|  | 'webapp:clean', 'webapp:sasscompile', | 
|  | ['webapp:copyjs', 'webapp:copycss', 'webapp:copyothers'], | 
|  | ['webapp:constants', 'webapp:template'], ['webapp:useref'], | 
|  | ['webapp:copyresources'], callback); | 
|  | }; |