(hoofbeats) Add support for pluggable resolvers.
[profile/ivi/cowhide.git] / grunt.js
1 module.exports = function(grunt) {
2
3   // Project configuration.
4   grunt.initConfig({
5     watch: {
6       files: [
7         'grunt.js',
8
9         'src/javascripts/*.js',
10         'src/bootstrap/**/*.{js,less}',
11         'src/stylesheets/**/*.less',
12         'src/themes/**/*.less',
13
14         'examples/**/*.*',
15
16         'tests/**/*.js'
17       ],
18       tasks: 'default'
19     },
20     clean: {
21       folder: 'dist'
22     },
23     lint: {
24       all: [
25         'grunt.js',
26
27         'src/bootstrap/js/*.js',
28         'src/javascripts/*.js',
29
30         'examples/calf/javascripts/*.js',
31         'examples/calf/javascripts/app/*.js',
32         'examples/calf/javascripts/app/**/*.js',
33
34         'examples/calf-ng/javascripts/*.js',
35         'examples/calf-ng/javascripts/app/*.js',
36         'examples/calf-ng/javascripts/app/**/*.js',
37
38         'examples/widget-gallery/javascripts/*.js',
39
40         'examples/hoofbeats/javascripts/*.js',
41         'examples/hoofbeats/javascripts/resolvers/*.js',
42
43         'test/**/*.js'
44       ]
45     },
46     jshint: {
47       options: {
48         "validthis": true,
49         "laxcomma" : true,
50         "laxbreak" : true,
51         "browser"  : true,
52         "eqnull"   : true,
53         "debug"    : true,
54         "devel"    : true,
55         "boss"     : true,
56         "expr"     : true,
57         "asi"      : true,
58         "es5"      : true
59       }
60     },
61     less: {
62       default_: {
63         files: {
64           'dist/cowhide-default.css': 'src/themes/default/default.less',
65           'dist/cowhide-responsive.css': 'src/bootstrap/less/responsive.less'
66         }
67       },
68       default_night: {
69         files: {
70           'dist/cowhide-default-night.css': 'src/themes/default/default-night.less'
71         }
72       },
73       amelia: {
74         files: {
75           'dist/cowhide-amelia.css': 'src/themes/amelia/amelia.less'
76         }
77       },
78       amelia_night: {
79         files: {
80           // TODO: add theme implementation for amelia-night.
81           'dist/cowhide-amelia-night.css': 'src/themes/amelia/amelia.less'
82         }
83       },
84       spruce: {
85         files: {
86           'dist/cowhide-spruce.css': 'src/themes/spruce/spruce.less'
87         }
88       },
89       spruce_night: {
90         files: {
91           // TODO: add theme implementation for spruce-night.
92           'dist/cowhide-spruce-night.css': 'src/themes/spruce/spruce.less'
93         }
94       }
95     },
96     concat: {
97       cowhide_js: {
98         src: [
99           'lib/jquery-1.8.3.js',
100           'lib/jquery-ui-1.9.2.custom.js',
101           'lib/jquery.ui.slider.js',
102           'lib/jquery.mCustomScrollbar.js',
103           'lib/underscore-min.js',
104
105           // Bootstrap files must preserve order.
106           'src/bootstrap/js/bootstrap-transition.js',
107           'src/bootstrap/js/bootstrap-alert.js',
108           'src/bootstrap/js/bootstrap-button.js',
109           'src/bootstrap/js/bootstrap-carousel.js',
110           'src/bootstrap/js/bootstrap-collapse.js',
111           'src/bootstrap/js/bootstrap-dropdown.js',
112           'src/bootstrap/js/bootstrap-modal.js',
113           'src/bootstrap/js/bootstrap-tooltip.js',
114           'src/bootstrap/js/bootstrap-popover.js',
115           'src/bootstrap/js/bootstrap-scrollspy.js',
116           'src/bootstrap/js/bootstrap-tab.js',
117           'src/bootstrap/js/bootstrap-typeahead.js',
118           'src/bootstrap/js/bootstrap-affix.js',
119
120           'src/javascripts/api.js',
121
122           'src/javascripts/cowhide-core.js',
123           'src/javascripts/cowhide-widget.js',
124           'src/javascripts/cowhide-button.js',
125           'src/javascripts/cowhide-seat-selector.js',
126           'src/javascripts/cowhide-slider.js',
127           'src/javascripts/cowhide-text-input.js',
128           'src/javascripts/cowhide-radio-input.js',
129           'src/javascripts/cowhide-checkbox-input.js',
130           'src/javascripts/cowhide-select.js',
131           'src/javascripts/cowhide-page.js',
132           'src/javascripts/cowhide-header.js',
133           'src/javascripts/cowhide-scrollable.js',
134           'src/javascripts/cowhide-simple-scrollable.js'
135         ], dest: 'dist/cowhide.js'
136       },
137       cowhide_ng_js: {
138         src: [
139           'lib/angular.js',
140
141           'src/javascripts/cowhide-ng-core.js',
142           'src/javascripts/cowhide-ng-page.js',
143           'src/javascripts/cowhide-ng-header.js',
144           'src/javascripts/cowhide-ng-button.js',
145           'src/javascripts/cowhide-ng-slider.js',
146           'src/javascripts/cowhide-ng-scrollable.js'
147         ], dest: 'dist/cowhide-ng.js'
148       },
149       css_default: {
150         src: [
151           'dist/cowhide-default.css',
152           'lib/jquery.ui.slider.css',
153           'lib/jquery.mCustomScrollbar.css'
154         ], dest: 'dist/cowhide-default.css'
155       },
156       css_default_night: {
157         src: [
158           'dist/cowhide-default-night.css',
159           'lib/jquery.ui.slider.css',
160           'lib/jquery.mCustomScrollbar.css'
161         ], dest: 'dist/cowhide-default-night.css'
162       },
163       css_amelia: {
164         src: [
165           'dist/cowhide-amelia.css',
166           'lib/jquery.ui.slider.css',
167           'lib/jquery.mCustomScrollbar.css'
168         ], dest: 'dist/cowhide-amelia.css'
169       },
170       css_amelia_night: {
171         src: [
172           'dist/cowhide-amelia-night.css',
173           'lib/jquery.ui.slider.css',
174           'lib/jquery.mCustomScrollbar.css'
175         ], dest: 'dist/cowhide-amelia-night.css'
176       },
177       css_spruce: {
178         src: [
179           'dist/cowhide-spruce.css',
180           'lib/jquery.ui.slider.css',
181           'lib/jquery.mCustomScrollbar.css'
182         ], dest: 'dist/cowhide-spruce.css'
183       },
184       css_spruce_night: {
185         src: [
186           'dist/cowhide-spruce-night.css',
187           'lib/jquery.ui.slider.css',
188           'lib/jquery.mCustomScrollbar.css'
189         ], dest: 'dist/cowhide-spruce-night.css'
190       }
191     },
192     min: {
193       cowhide: {
194         src: ['dist/cowhide.js'],
195         dest: 'dist/cowhide.min.js'
196       },
197       cowhide_ng: {
198         src: ['fist/cowhide-ng.js'],
199         dest: 'dist/cowhide-ng.min.js'
200       }
201     },
202     cssmin: {
203       default_: {
204         src: ['dist/cowhide-default.css'],
205         dest: 'dist/cowhide-default.min.css'
206       },
207       responsive: {
208         src: ['dist/cowhide-responsive.css'],
209         dest: 'dist/cowhide-responsive.min.css'
210       },
211       default_night: {
212         src: ['dist/cowhide-default-night.css'],
213         dest: 'dist/cowhide-default-night.min.css'
214       },
215       amelia: {
216         src: ['dist/cowhide-amelia.css'],
217         dest: 'dist/cowhide-amelia.min.css'
218       },
219       amelia_night: {
220         src: ['dist/cowhide-amelia-night.css'],
221         dest: 'dist/cowhide-amelia-night.min.css'
222       },
223       spruce: {
224         src: ['dist/cowhide-spruce.css'],
225         dest: 'dist/cowhide-spruce.min.css'
226       },
227       spruce_night: {
228         src: ['dist/cowhide-spruce-night.css'],
229         dest: 'dist/cowhide-spruce-night.min.css'
230       }
231     },
232     copy: {
233       dist: {
234         files: {
235           'dist/images/': 'images/**',
236           'dist/README.md': 'README.md',
237           'dist/examples/calf/': 'examples/calf/**',
238           'dist/examples/calf-ng/': 'examples/calf-ng/**',
239           'dist/examples/hoofbeats/': 'examples/hoofbeats/**',
240           'dist/examples/widget-gallery/': 'examples/widget-gallery/**',
241           'dist/docs/': 'docs/**'
242         }
243       },
244       examples_lib: {
245         options: {
246           flatten: true
247         },
248         files: {
249           'examples/calf/lib/': [
250             'dist/cowhide-default.css',
251             'dist/cowhide.js',
252           ],
253           'examples/calf/lib/images/': ['dist/images/**'],
254
255           'examples/hoofbeats/lib/': [
256             'dist/cowhide-default.css',
257             'dist/cowhide.js',
258             'lib/handlebars-1.0.rc.2.js',
259             'lib/ember-1.0.0-pre.4.js'
260           ],
261           'examples/hoofbeats/lib/images/': ['dist/images/**']
262         }
263       },
264       examples_lib_dist: {
265         options: {
266           flatten: true
267         },
268         files: {
269           'dist/examples/calf/lib/': [
270             'dist/images/',
271             'dist/cowhide-default.css',
272             'dist/cowhide.js',
273           ],
274           'dist/examples/calf/lib/images/': ['dist/images/**'],
275
276           'dist/examples/hoofbeats/lib/': [
277             'dist/images/',
278             'dist/cowhide-default.css',
279             'dist/cowhide.js',
280             'lib/handlebars-1.0.rc.2.js',
281             'lib/ember-1.0.0-pre.4.js'
282           ],
283           'dist/examples/hoofbeats/lib/images/': ['dist/images/**']
284         }
285       }
286     },
287     exec: {
288       build_docs: {
289         command: 'node dist/docs/build'
290       }
291     },
292     compress: {
293       dist: {
294         files: {
295           'dist/cowhide.zip': 'dist/**'
296         }
297       }
298     },
299     growl : {
300       started : {
301         message : "Grunt compilation started.",
302         title : "Cowhide"
303       },
304       finished : {
305           message : "Grunt compilation finished.",
306           title : "Cowhide"
307       }
308     }
309   });
310
311   // Default task.
312   grunt.loadNpmTasks('grunt-contrib-less');
313   grunt.loadNpmTasks('grunt-css');
314   grunt.loadNpmTasks('grunt-growl');
315   grunt.loadNpmTasks('grunt-contrib-copy');
316   grunt.loadNpmTasks('grunt-contrib-compress');
317   grunt.loadNpmTasks('grunt-clean');
318   grunt.loadNpmTasks('grunt-exec');
319
320   grunt.registerTask('default', 'growl:started clean lint less concat min cssmin copy exec:build_docs compress growl:finished');
321 };