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