-
Notifications
You must be signed in to change notification settings - Fork 194
/
Gruntfile.js
160 lines (143 loc) · 4.79 KB
/
Gruntfile.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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
'use strict';
module.exports = function (grunt) {
// Load grunt tasks automatically
require('load-grunt-tasks')(grunt);
/*
* Time how long grunt tasks take to run, this might be important when having complex builds that take forever.
* For now just to show how fancy grunt is.
*/
require('time-grunt')(grunt);
// init required configurations for each task.
grunt.initConfig({
// Project settings
config: {
path: {
webapp: {
root: 'src/main/webapp'
},
temp: {
root: 'temp'
},
build: {
root: 'build'
}
}
},
// From grunt-contrib-clean
clean: {
build: [
'<%= config.path.temp.root %>',
'<%= config.path.build.root %>'
]
},
// From grunt-bower-install-simple. Downloads the web dependencies.
"bower-install-simple": {
options: {
color: true
},
"prod": {
options: {
production: true
}
},
"dev": {
options: {
production: false
}
}
},
// From grunt-wiredep. Automatically inject Bower components into the HTML file
wiredep: {
target: {
src: '<%= config.path.webapp.root %>/index.html',
ignorePath: '<%= config.path.webapp.root %>'
}
},
// From grunt-contrib-concat. This is usefull when we have more than one css file, not the case now...
/*
concat: {
styles: {
src: [
'<%= config.path.webapp.root %>/css/style.css',
],
dest: '<%= config.path.temp.root %>/concat/css/application.css'
}
},
*/
// From grunt-contrib-copy. Copies remaining files to places other tasks can use
copy: {
build: {
files: [
{
src: '<%= config.path.webapp.root %>/index.html',
dest: '<%= config.path.build.root %>/index.html'
}
]
}
},
// From grunt-contrib-htmlmin. Minifies index.html file.
htmlmin: {
prod: {
options: {
collapseBooleanAttributes: true,
collapseWhitespace: true,
removeComments: true,
removeCommentsFromCDATA: true,
removeEmptyAttributes: true,
removeOptionalTags: true,
removeRedundantAttributes: true,
useShortDoctype: true
},
files: [
{
expand: true,
cwd: '<%= config.path.build.root %>',
src: ['index.html'],
dest: '<%= config.path.build.root %>'
}
]
}
},
// From grunt-usemin. Reads HTML for usemin blocks to enable smart builds
useminPrepare: {
html: '<%= config.path.webapp.root %>/index.html',
options: {
staging: '<%= config.path.temp.root %>',
root: '<%= config.path.webapp.root %>',
dest: '<%= config.path.build.root %>'
}
},
// From grunt-usemin.
usemin: {
html: '<%= config.path.build.root %>/index.html'
},
// From grunt-contrib-uglify.
uglify: {
options: {
mangle: false
}
}
}
);
// Task: Build production version ready for deployment
grunt.registerTask('install', [
'clean:build',
'bower-install-simple',
//'concat:styles',
'wiredep',
'useminPrepare',
'concat:generated',
'cssmin',
'uglify',
'copy:build',
'usemin',
'htmlmin'
]);
grunt.registerTask('process-resources', [
'bower-install-simple',
'wiredep',
]);
grunt.registerTask('default', [
'install'
]);
};