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