blob: edeaff8e03b8ea08a61bf6768170795deee44be4 [file] [log] [blame]
/*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);
};