1
1
var gulp = require ( 'gulp' ) ;
2
2
var Server = require ( 'karma' ) . Server ;
3
3
var browserSync = require ( 'browser-sync' ) . create ( ) ;
4
+ var usemin = require ( 'gulp-usemin' ) ,
5
+ cssnano = require ( 'gulp-cssnano' ) ,
6
+ rev = require ( 'gulp-rev' ) ,
7
+ htmlmin = require ( 'gulp-htmlmin' ) ,
8
+ sourcemaps = require ( 'gulp-sourcemaps' ) ,
9
+ ngAnnotate = require ( 'gulp-ng-annotate' ) ,
10
+ uglify = require ( 'gulp-uglify' ) ,
11
+ prefix = require ( 'gulp-autoprefixer' ) ,
12
+ imagemin = require ( 'gulp-imagemin' ) ,
13
+ flatten = require ( 'gulp-flatten' ) ,
14
+ del = require ( 'del' ) ,
15
+ runSequence = require ( 'run-sequence' ) ;
16
+
17
+ var config = {
18
+ app : 'src/main/webapp/' ,
19
+ dist : 'src/main/webapp/dist/'
20
+ } ;
21
+
4
22
/**
5
23
* Run test once and exit
6
24
*/
7
- //TODO make browserSyn use server proxy
8
25
gulp . task ( 'test' , function ( done ) {
9
26
new Server ( {
10
27
configFile : __dirname + '/src/test/javascript/karma.conf.js' ,
11
28
singleRun : true
12
29
} , done ) . start ( ) ;
13
30
} ) ;
14
31
32
+ /**
33
+ * Run test once and watch changing
34
+ */
15
35
gulp . task ( 'test-watch' , function ( done ) {
16
36
new Server ( {
17
- configFile : __dirname + '/src/test/javascript/karma.conf.js' ,
37
+ configFile : __dirname + '/src/test/javascript/karma.conf.js' ,
18
38
singleRun : false
19
39
} , done ) . start ( ) ;
20
40
} ) ;
21
41
22
- // Static Server + watching js/css/html files
42
+ /**
43
+ * Run a static server and reload changing file
44
+ */
23
45
gulp . task ( 'serve' , function ( ) {
24
46
browserSync . init ( {
25
47
server : __dirname + '/src/main/webapp'
26
48
} ) ;
27
49
gulp . watch ( __dirname + '/src/main/webapp/*' ) . on ( 'change' , browserSync . reload ) ;
28
50
} ) ;
29
51
30
- //TODO minify the css
31
- //build the front project
32
- gulp . task ( 'build' , [ ] ) ;
33
52
34
- gulp . task ( 'default' , function ( ) {
35
- // place code for your default task here
36
- } ) ;
53
+ /**
54
+ * build the front app for prod env
55
+ */
56
+ gulp . task ( 'build' , function ( cb ) {
57
+ runSequence ( 'clean' , 'usemin' , 'copy-bs-fonts' , cb ) ;
58
+ } ) ;
59
+
60
+ gulp . task ( 'styles' , [ ] , function ( ) {
61
+ return gulp . src ( config . app + 'assets/css/**/*.css' )
62
+ . pipe ( browserSync . reload ( { stream : true } ) ) ;
63
+ } ) ;
64
+
65
+ /**
66
+ * minimise images size
67
+ */
68
+ gulp . task ( 'images' , function ( ) {
69
+ return gulp . src ( config . app + 'assets/images/**' )
70
+ . pipe ( imagemin ( { optimizationLevel : 5 } ) )
71
+ . pipe ( gulp . dest ( config . dist + 'assets/images' ) )
72
+ . pipe ( browserSync . reload ( { stream : true } ) ) ;
73
+ } ) ;
74
+
75
+ /**
76
+ * copy bootstrap font into assets/fonts
77
+ */
78
+ gulp . task ( 'copy-bs-fonts' , function ( ) {
79
+ return gulp . src ( [
80
+ config . app + 'bower_components/bootstrap/fonts/*.*' ] )
81
+ . pipe ( flatten ( ) )
82
+ . pipe ( gulp . dest ( config . dist + 'assets/fonts/' ) ) ;
83
+ } ) ;
84
+
85
+ /**
86
+ * remove the old dist directory
87
+ */
88
+ gulp . task ( 'clean' , function ( ) {
89
+ return del ( [ config . dist ] ) ;
90
+ } ) ;
91
+
92
+ /**
93
+ * minify css and js
94
+ */
95
+ gulp . task ( 'usemin' , [ 'styles' , 'images' ] , function ( ) {
96
+ return gulp . src ( [ config . app + '**/*.html' , '!' + config . app + '@(dist|bower_components)/**/*.html' ] )
97
+ . pipe ( usemin ( {
98
+ css : [
99
+ prefix ,
100
+ 'concat' ,
101
+ cssnano ,
102
+ rev
103
+ ] ,
104
+ html : [
105
+ htmlmin . bind ( htmlmin , { collapseWhitespace : true } )
106
+ ] ,
107
+ js : [
108
+ sourcemaps . init ,
109
+ ngAnnotate ,
110
+ 'concat' ,
111
+ uglify . bind ( uglify , { mangle : false } ) ,
112
+ rev ,
113
+ sourcemaps . write . bind ( sourcemaps . write , '.' )
114
+ ]
115
+ } ) )
116
+ . pipe ( gulp . dest ( config . dist ) ) ;
117
+ } ) ;
0 commit comments