blob: e5145435052d42cd0b7637ee5b603202a6d9a0a7 [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
);
};