-
Notifications
You must be signed in to change notification settings - Fork 2
/
gulpfile.js
126 lines (114 loc) · 3.27 KB
/
gulpfile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
var gulp = require('gulp');
var gutil = require('gulp-util');
var Server = require('karma').Server;
var browserSync = require('browser-sync').create();
var usemin = require('gulp-usemin'),
cssnano = require('gulp-cssnano'),
rev = require('gulp-rev'),
htmlmin = require('gulp-htmlmin'),
sourcemaps = require('gulp-sourcemaps'),
ngAnnotate = require('gulp-ng-annotate'),
uglify = require('gulp-uglify'),
prefix = require('gulp-autoprefixer'),
flatten = require('gulp-flatten'),
del = require('del'),
runSequence = require('run-sequence');
var config = {
app: 'src/main/webapp/',
dist: 'src/main/webapp/dist/'
};
/**
* Run test once and exit
*/
gulp.task('test', function (done) {
new Server({
configFile: __dirname + '/src/test/javascript/karma.conf.js',
singleRun: true
}).on('browser_error', function (browser, err) {
gutil.log('Karma Run Failed: ' + err.message);
throw err;
}).on('run_complete', function (browsers, results) {
if (results.failed) {
throw new Error('Karma: Tests Failed');
}
gutil.log('Karma Run Complete: No Failures');
done();
}).start();
});
/**
* Run test once and watch changing
*/
gulp.task('test-watch', function (done) {
new Server({
configFile: __dirname + '/src/test/javascript/karma.conf.js',
singleRun: false
}, done).start();
});
/**
* Run a static server and reload changing file
*/
gulp.task('serve', function () {
browserSync.init({
server: __dirname + '/src/main/webapp'
});
gulp.watch(__dirname + '/src/main/webapp/*').on('change', browserSync.reload);
});
/**
* build the front app for prod env
*/
gulp.task('build', function (cb) {
runSequence('clean', 'usemin', 'copy-fonts', 'copy-images', cb);
});
gulp.task('styles', [], function () {
return gulp.src(config.app + 'assets/css/**/*.css')
.pipe(browserSync.reload({stream: true}));
});
/**
* copy bootstrap font into assets/fonts
*/
gulp.task('copy-fonts', function () {
return gulp.src([
config.app + 'bower_components/bootstrap/fonts/*.*',
config.app + 'bower_components/font-awesome/fonts/*.*'])
.pipe(flatten())
.pipe(gulp.dest(config.dist + 'assets/fonts/'));
});
/**
* copy images
*/
gulp.task('copy-images', function () {
return gulp.src(config.app + 'assets/images/**')
.pipe(gulp.dest(config.dist + 'assets/images'));
});
/**
* remove the old dist directory
*/
gulp.task('clean', function () {
return del([config.dist]);
});
/**
* minify css and js
*/
gulp.task('usemin', ['styles'], function () {
return gulp.src([config.app + '**/*.html', '!' + config.app + '@(dist|bower_components)/**/*.html'])
.pipe(usemin({
css: [
prefix,
'concat',
cssnano,
rev
],
html: [
htmlmin.bind(htmlmin, {collapseWhitespace: true})
],
js: [
sourcemaps.init,
ngAnnotate,
'concat',
uglify.bind(uglify, {mangle: false}),
rev,
sourcemaps.write.bind(sourcemaps.write, '.')
]
}))
.pipe(gulp.dest(config.dist));
});