642f6ef3456267cd2dea505c71db1eb2b2b886d1
[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/widget-gallery/javascripts/*.js',
34
35         'test/**/*.js'
36       ]
37     },
38     jshint: {
39       options: {
40         "validthis": true,
41         "laxcomma" : true,
42         "laxbreak" : true,
43         "browser"  : true,
44         "eqnull"   : true,
45         "debug"    : true,
46         "devel"    : true,
47         "boss"     : true,
48         "expr"     : true,
49         "asi"      : true
50       }
51     },
52     less: {
53       default_: {
54         files: {
55           'dist/cowhide-default.css': 'src/themes/default/default.less',
56           'dist/cowhide-responsive.css': 'src/bootstrap/less/responsive.less'
57         }
58       },
59       default_night: {
60         files: {
61           'dist/cowhide-default-night.css': 'src/themes/default/default-night.less'
62         }
63       },
64       amelia: {
65         files: {
66           'dist/cowhide-amelia.css': 'src/themes/amelia/amelia.less'
67         }
68       },
69       amelia_night: {
70         files: {
71           // TODO: add theme implementation for amelia-night.
72           'dist/cowhide-amelia-night.css': 'src/themes/amelia/amelia.less'
73         }
74       },
75       spruce: {
76         files: {
77           'dist/cowhide-spruce.css': 'src/themes/spruce/spruce.less'
78         }
79       },
80       spruce_night: {
81         files: {
82           // TODO: add theme implementation for spruce-night.
83           'dist/cowhide-spruce-night.css': 'src/themes/spruce/spruce.less'
84         }
85       }
86     },
87     concat: {
88       js: {
89         src: [
90           'lib/jquery-1.8.2.js',
91           'lib/jquery.ui.core.js',
92           'lib/jquery.ui.widget.js',
93           'lib/jquery.ui.mouse.js',
94           'lib/jquery.ui.slider.js',
95           'lib/underscore-min.js',
96
97           // Bootstrap files must preserve order.
98           'src/bootstrap/js/bootstrap-transition.js',
99           'src/bootstrap/js/bootstrap-alert.js',
100           'src/bootstrap/js/bootstrap-button.js',
101           'src/bootstrap/js/bootstrap-carousel.js',
102           'src/bootstrap/js/bootstrap-collapse.js',
103           'src/bootstrap/js/bootstrap-dropdown.js',
104           'src/bootstrap/js/bootstrap-modal.js',
105           'src/bootstrap/js/bootstrap-tooltip.js',
106           'src/bootstrap/js/bootstrap-popover.js',
107           'src/bootstrap/js/bootstrap-scrollspy.js',
108           'src/bootstrap/js/bootstrap-tab.js',
109           'src/bootstrap/js/bootstrap-typeahead.js',
110           'src/bootstrap/js/bootstrap-affix.js',
111
112           'src/javascripts/cowhide-core.js',
113           'src/javascripts/cowhide-widget.js',
114           'src/javascripts/cowhide-button.js',
115           'src/javascripts/cowhide-seat-selector.js',
116           'src/javascripts/cowhide-slider.js',
117           'src/javascripts/cowhide-text-input.js',
118           'src/javascripts/cowhide-radio-input.js',
119           'src/javascripts/cowhide-page.js'
120         ], dest: 'dist/cowhide.js'
121       },
122       css_default: {
123         src: [
124           'dist/cowhide-default.css',
125           'lib/jquery.ui.slider.css'
126         ], dest: 'dist/cowhide-default.css'
127       },
128       css_default_night: {
129         src: [
130           'dist/cowhide-default-night.css',
131           'lib/jquery.ui.slider.css'
132         ], dest: 'dist/cowhide-default-night.css'
133       },
134       css_amelia: {
135         src: [
136           'dist/cowhide-amelia.css',
137           'lib/jquery.ui.slider.css'
138         ], dest: 'dist/cowhide-amelia.css'
139       },
140       css_amelia_night: {
141         src: [
142           'dist/cowhide-amelia-night.css',
143           'lib/jquery.ui.slider.css'
144         ], dest: 'dist/cowhide-amelia-night.css'
145       },
146       css_spruce: {
147         src: [
148           'dist/cowhide-spruce.css',
149           'lib/jquery.ui.slider.css'
150         ], dest: 'dist/cowhide-spruce.css'
151       },
152       css_spruce_night: {
153         src: [
154           'dist/cowhide-spruce-night.css',
155           'lib/jquery.ui.slider.css'
156         ], dest: 'dist/cowhide-spruce-night.css'
157       }
158     },
159     min: {
160       all: {
161         src: ['dist/cowhide.js'],
162         dest: 'dist/cowhide.min.js'
163       }
164     },
165     cssmin: {
166       default_: {
167         src: ['dist/cowhide-default.css'],
168         dest: 'dist/cowhide-default.min.css'
169       },
170       responsive: {
171         src: ['dist/cowhide-responsive.css'],
172         dest: 'dist/cowhide-responsive.min.css'
173       },
174       default_night: {
175         src: ['dist/cowhide-default-night.css'],
176         dest: 'dist/cowhide-default-night.min.css'
177       },
178       amelia: {
179         src: ['dist/cowhide-amelia.css'],
180         dest: 'dist/cowhide-amelia.min.css'
181       },
182       amelia_night: {
183         src: ['dist/cowhide-amelia-night.css'],
184         dest: 'dist/cowhide-amelia-night.min.css'
185       },
186       spruce: {
187         src: ['dist/cowhide-spruce.css'],
188         dest: 'dist/cowhide-spruce.min.css'
189       },
190       spruce_night: {
191         src: ['dist/cowhide-spruce-night.css'],
192         dest: 'dist/cowhide-spruce-night.min.css'
193       }
194     },
195     copy: {
196       dist: {
197         files: {
198           'dist/images/': 'images/**',
199           'dist/README.md': 'README.md',
200           'dist/examples/calf/': 'examples/calf/**',
201           'dist/examples/widget-gallery/': 'examples/widget-gallery/**',
202           'dist/docs/': 'docs/**'
203         }
204       }
205     },
206     exec: {
207       build_docs: {
208         command: 'node dist/docs/build'
209       }
210     },
211     compress: {
212       dist: {
213         files: {
214           'dist/cowhide.zip': 'dist/**'
215         }
216       }
217     },
218     growl : {
219       started : {
220         message : "Grunt compilation started.",
221         title : "Cowhide"
222       },
223       finished : {
224           message : "Grunt compilation finished.",
225           title : "Cowhide"
226       }
227     }
228   });
229
230   // Default task.
231   grunt.loadNpmTasks('grunt-contrib-less');
232   grunt.loadNpmTasks('grunt-css');
233   grunt.loadNpmTasks('grunt-growl');
234   grunt.loadNpmTasks('grunt-contrib-copy');
235   grunt.loadNpmTasks('grunt-contrib-compress');
236   grunt.loadNpmTasks('grunt-clean');
237   grunt.loadNpmTasks('grunt-exec');
238
239   grunt.registerTask('default', 'growl:started clean lint less concat min cssmin copy exec:build_docs compress growl:finished');
240 };