]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/web/js/ui/default/staff/Gruntfile.js
webstaff: throw a kitchen sink at double-scrollbar issues
[working/Evergreen.git] / Open-ILS / web / js / ui / default / staff / Gruntfile.js
1 module.exports = function(grunt) {
2
3   // Project configuration.
4   var config = { 
5     pkg: grunt.file.readJSON('package.json'),
6
7     // copy the files we care about from bower-fetched dependencies
8     // into our build directory
9     copy: {
10
11       js : {
12         files: [{ 
13           dest: 'build/js/', 
14           flatten: true,
15           filter: 'isFile',
16           expand : true,
17           src: [
18             'bower_components/angular/angular.min.js',
19             'bower_components/angular/angular.min.js.map',
20             'bower_components/angular-animate/angular-animate.min.js',
21             'bower_components/angular-animate/angular-animate.min.js.map',
22             'bower_components/angular-sanitize/angular-sanitize.min.js',
23             'bower_components/angular-sanitize/angular-sanitize.min.js.map',
24             'bower_components/angular-route/angular-route.min.js',
25             'bower_components/angular-route/angular-route.min.js.map',
26             'bower_components/angular-bootstrap/ui-bootstrap.min.js',
27             'bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js',
28             'bower_components/angular-hotkeys/build/hotkeys.min.js',
29             'bower_components/angular-file-saver/dist/angular-file-saver.bundle.min.js',
30             'bower_components/angular-location-update/angular-location-update.min.js',
31             'bower_components/angular-tree-control/angular-tree-control.js',
32             'bower_components/ngtoast/dist/ngToast.min.js',
33             'bower_components/jquery/dist/jquery.min.js',
34             'bower_components/angular-cookies/angular-cookies.min.js',
35             'bower_components/angular-cookies/angular-cookies.min.js.map',
36             'bower_components/iframe-resizer/js/iframeResizer.min.js',
37             'bower_components/iframe-resizer/js/iframeResizer.map',
38             'bower_components/iframe-resizer/js/iframeResizer.contentWindow.min.js'
39           ]
40         }]
41       },
42
43       css : {
44         files : [{
45           dest : 'build/css/',
46           flatten : true,
47           filter : 'isFile',
48           expand : true,
49           src : [
50             'bower_components/angular-hotkeys/build/hotkeys.min.css',
51             'bower_components/bootstrap/dist/css/bootstrap.min.css', 
52             'bower_components/ngtoast/dist/ngToast.min.css',
53             'bower_components/ngtoast/dist/ngToast-animations.min.css',
54             'bower_components/angular-tree-control/css/tree-control.css',
55             'bower_components/angular-tree-control/css/tree-control-attribute.css',
56           ]
57         }]
58       },
59
60       fonts : {
61         files : [{
62           dest : 'build/fonts/',
63           flatten : true,
64           filter : 'isFile',
65           expand : true,
66           src : [
67             'bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot',
68             'bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.svg',
69             'bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf',
70             'bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff'
71           ]
72         }]
73       },
74
75       images : {
76         files : [{
77           dest : 'build/images/',
78           flatten : true,
79           filter : 'isFile',
80           expand : true,
81           src : [
82             'bower_components/angular-tree-control/images/sample.png',
83             'bower_components/angular-tree-control/images/node-opened-2.png',
84             'bower_components/angular-tree-control/images/folder.png',
85             'bower_components/angular-tree-control/images/node-closed.png',
86             'bower_components/angular-tree-control/images/node-closed-light.png',
87             'bower_components/angular-tree-control/images/node-opened.png',
88             'bower_components/angular-tree-control/images/node-opened-light.png',
89             'bower_components/angular-tree-control/images/folder-closed.png',
90             'bower_components/angular-tree-control/images/node-closed-2.png',
91             'bower_components/angular-tree-control/images/file.png'
92           ]
93         }]
94       }
95     },
96
97     // combine our CSS deps
98     // note: minification also supported, but not required (yet).
99     cssmin: {
100       combine: {
101         files: {
102           'build/css/evergreen-staff-client-deps.<%= pkg.version %>.min.css' : [
103             'build/css/hotkeys.min.css',
104             'build/css/bootstrap.min.css',
105             'build/css/ngToast.min.css',
106             'build/css/ngToast-animations.min.css',
107             'build/css/tree-control.css',
108             'build/css/tree-control-attribute.css',
109           ]
110         }
111       }
112     },
113
114     // concatenation + minification
115     uglify: {
116       options: {
117         banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
118       },
119       build: {
120         src: [
121             // These are concatenated in order in the final build file.
122             // The order is important.
123             'build/js/jquery.min.js',
124             'build/js/angular.min.js',
125             'build/js/angular-animate.min.js',
126             'build/js/angular-sanitize.min.js',
127             'build/js/angular-route.min.js',
128             'build/js/ui-bootstrap.min.js',
129             'build/js/ui-bootstrap-tpls.min.js',
130             'build/js/hotkeys.min.js',
131             'build/js/angular-tree-control.js',
132             'build/js/ngToast.min.js',
133             // NOTE: OpenSRF must be installed
134             '/openils/lib/javascript/JSON_v1.js',
135             '/openils/lib/javascript/opensrf.js',
136             '/openils/lib/javascript/opensrf_ws.js',
137             'services/core.js',
138             'services/strings.js',
139             'services/idl.js',
140             'services/event.js',
141             'services/net.js',
142             'services/auth.js',
143             'services/pcrud.js',
144             'services/env.js',
145             'services/org.js',
146             'services/startup.js',
147             'services/hatch.js',
148             'services/print.js',
149             'services/audio.js',
150             'services/coresvc.js',
151             'services/navbar.js',
152             'services/statusbar.js',
153             'services/ui.js',
154             'services/date.js',
155         ],
156         dest: 'build/js/<%= pkg.name %>.<%= pkg.version %>.min.js'
157       }
158     },
159
160     // bare concat operation; useful for testing concat w/o minification
161     // to more easily detect if concat order is incorrect
162     concat: {
163       options: {
164        separator: ';',
165       }
166     },
167
168     exec : {
169
170       // Generate test/data/IDL2js.js for unit tests.
171       // note: the output of this script is *not* part of the final build.
172       idl2js : {
173         command : 'cd test/data && perl idl2js.pl',
174       },
175
176       // Remove the unit test IDL2js.js file.  We don't need it after testing
177       rmidl2js : {
178         command : 'rm test/data/IDL2js.js',
179       }
180     },
181
182     // unit tests configuration
183     karma : {
184       unit: {
185         configFile: 'test/karma.conf.js',
186         //background: true  // for now, visually babysit unit tests
187       }
188     }
189   };
190
191   // tell concat about our uglify build options (instead of repeating them)
192   config.concat.build = config.uglify.build;
193
194   // apply our configuration
195   grunt.initConfig(config);
196
197   // Load our modules
198   grunt.loadNpmTasks('grunt-contrib-uglify');
199   grunt.loadNpmTasks('grunt-contrib-concat');
200   grunt.loadNpmTasks('grunt-contrib-copy');
201   grunt.loadNpmTasks('grunt-contrib-cssmin');
202   grunt.loadNpmTasks('grunt-karma');
203   grunt.loadNpmTasks('grunt-exec');
204
205   // note: "grunt concat" is not requried 
206   grunt.registerTask('build', ['copy', 'cssmin', 'uglify']);
207
208   // test only, no minification
209   grunt.registerTask('test', ['copy', 'exec:idl2js', 'karma:unit', 'exec:rmidl2js']);
210
211   // note: "grunt concat" is not requried 
212   grunt.registerTask('all', ['test', 'cssmin', 'uglify']);
213
214 };
215
216 // vim: ts=2:sw=2:softtabstop=2