/[projects]/misc/horsensspejder-web/jquery/jquery-ui-1.10.3/Gruntfile.js
ViewVC logotype

Annotation of /misc/horsensspejder-web/jquery/jquery-ui-1.10.3/Gruntfile.js

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2125 - (hide annotations) (download) (as text)
Wed Mar 12 19:30:05 2014 UTC (10 years, 3 months ago) by torben
File MIME type: application/javascript
File size: 9165 byte(s)
initial import
1 torben 2125 module.exports = function( grunt ) {
2    
3     "use strict";
4    
5     var
6     // files
7     coreFiles = [
8     "jquery.ui.core.js",
9     "jquery.ui.widget.js",
10     "jquery.ui.mouse.js",
11     "jquery.ui.draggable.js",
12     "jquery.ui.droppable.js",
13     "jquery.ui.resizable.js",
14     "jquery.ui.selectable.js",
15     "jquery.ui.sortable.js",
16     "jquery.ui.effect.js"
17     ],
18    
19     uiFiles = coreFiles.map(function( file ) {
20     return "ui/" + file;
21     }).concat( expandFiles( "ui/*.js" ).filter(function( file ) {
22     return coreFiles.indexOf( file.substring(3) ) === -1;
23     })),
24    
25     allI18nFiles = expandFiles( "ui/i18n/*.js" ),
26    
27     cssFiles = [
28     "core",
29     "accordion",
30     "autocomplete",
31     "button",
32     "datepicker",
33     "dialog",
34     "menu",
35     "progressbar",
36     "resizable",
37     "selectable",
38     "slider",
39     "spinner",
40     "tabs",
41     "tooltip",
42     "theme"
43     ].map(function( component ) {
44     return "themes/base/jquery.ui." + component + ".css";
45     }),
46    
47     // minified files
48     minify = {
49     options: {
50     preserveComments: false
51     },
52     main: {
53     options: {
54     banner: createBanner( uiFiles )
55     },
56     files: {
57     "dist/jquery-ui.min.js": "dist/jquery-ui.js"
58     }
59     },
60     i18n: {
61     options: {
62     banner: createBanner( allI18nFiles )
63     },
64     files: {
65     "dist/i18n/jquery-ui-i18n.min.js": "dist/i18n/jquery-ui-i18n.js"
66     }
67     }
68     },
69    
70     minifyCSS = {
71     options: {
72     keepSpecialComments: 0
73     },
74     main: {
75     options: {
76     keepSpecialComments: "*"
77     },
78     src: "dist/jquery-ui.css",
79     dest: "dist/jquery-ui.min.css"
80     }
81     },
82    
83     compareFiles = {
84     all: [
85     "dist/jquery-ui.js",
86     "dist/jquery-ui.min.js"
87     ]
88     };
89    
90     function mapMinFile( file ) {
91     return "dist/" + file.replace( /\.js$/, ".min.js" ).replace( /ui\//, "minified/" );
92     }
93    
94     function expandFiles( files ) {
95     return grunt.util._.pluck( grunt.file.expandMapping( files ), "src" ).map(function( values ) {
96     return values[ 0 ];
97     });
98     }
99    
100     uiFiles.concat( allI18nFiles ).forEach(function( file ) {
101     minify[ file ] = {
102     options: {
103     banner: createBanner()
104     },
105     files: {}
106     };
107     minify[ file ].files[ mapMinFile( file ) ] = file;
108     });
109    
110     cssFiles.forEach(function( file ) {
111     minifyCSS[ file ] = {
112     options: {
113     banner: createBanner()
114     },
115     src: file,
116     dest: "dist/" + file.replace( /\.css$/, ".min.css" ).replace( /themes\/base\//, "themes/base/minified/" )
117     };
118     });
119    
120     uiFiles.forEach(function( file ) {
121     // TODO this doesn't do anything until https://github.com/rwldrn/grunt-compare-size/issues/13
122     compareFiles[ file ] = [ file, mapMinFile( file ) ];
123     });
124    
125     // grunt plugins
126     grunt.loadNpmTasks( "grunt-contrib-jshint" );
127     grunt.loadNpmTasks( "grunt-contrib-uglify" );
128     grunt.loadNpmTasks( "grunt-contrib-concat" );
129     grunt.loadNpmTasks( "grunt-contrib-qunit" );
130     grunt.loadNpmTasks( "grunt-contrib-csslint" );
131     grunt.loadNpmTasks( "grunt-contrib-cssmin" );
132     grunt.loadNpmTasks( "grunt-html" );
133     grunt.loadNpmTasks( "grunt-compare-size" );
134     grunt.loadNpmTasks( "grunt-git-authors" );
135     // local testswarm and build tasks
136     grunt.loadTasks( "build/tasks" );
137    
138     function stripDirectory( file ) {
139     return file.replace( /.+\/(.+?)>?$/, "$1" );
140     }
141    
142     function createBanner( files ) {
143     // strip folders
144     var fileNames = files && files.map( stripDirectory );
145     return "/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - " +
146     "<%= grunt.template.today('isoDate') %>\n" +
147     "<%= pkg.homepage ? '* ' + pkg.homepage + '\\n' : '' %>" +
148     (files ? "* Includes: " + fileNames.join(", ") + "\n" : "")+
149     "* Copyright <%= grunt.template.today('yyyy') %> <%= pkg.author.name %>;" +
150     " Licensed <%= _.pluck(pkg.licenses, 'type').join(', ') %> */\n";
151     }
152    
153     grunt.initConfig({
154     pkg: grunt.file.readJSON("package.json"),
155     files: {
156     dist: "<%= pkg.name %>-<%= pkg.version %>",
157     cdn: "<%= pkg.name %>-<%= pkg.version %>-cdn",
158     themes: "<%= pkg.name %>-themes-<%= pkg.version %>"
159     },
160     compare_size: compareFiles,
161     concat: {
162     ui: {
163     options: {
164     banner: createBanner( uiFiles ),
165     stripBanners: {
166     block: true
167     }
168     },
169     src: uiFiles,
170     dest: "dist/jquery-ui.js"
171     },
172     i18n: {
173     options: {
174     banner: createBanner( allI18nFiles )
175     },
176     src: allI18nFiles,
177     dest: "dist/i18n/jquery-ui-i18n.js"
178     },
179     css: {
180     options: {
181     banner: createBanner( cssFiles ),
182     stripBanners: {
183     block: true
184     }
185     },
186     src: cssFiles,
187     dest: "dist/jquery-ui.css"
188     }
189     },
190     uglify: minify,
191     cssmin: minifyCSS,
192     htmllint: {
193     // ignore files that contain invalid html, used only for ajax content testing
194     all: grunt.file.expand( [ "demos/**/*.html", "tests/**/*.html" ] ).filter(function( file ) {
195     return !/(?:ajax\/content\d\.html|tabs\/data\/test\.html|tests\/unit\/core\/core\.html)/.test( file );
196     })
197     },
198     copy: {
199     dist: {
200     src: [
201     "AUTHORS.txt",
202     "jquery-*.js",
203     "MIT-LICENSE.txt",
204     "README.md",
205     "Gruntfile.js",
206     "package.json",
207     "*.jquery.json",
208     "ui/**/*",
209     "ui/.jshintrc",
210     "demos/**/*",
211     "themes/**/*",
212     "external/**/*",
213     "tests/**/*"
214     ],
215     renames: {
216     "dist/jquery-ui.js": "ui/jquery-ui.js",
217     "dist/jquery-ui.min.js": "ui/minified/jquery-ui.min.js",
218     "dist/i18n/jquery-ui-i18n.js": "ui/i18n/jquery-ui-i18n.js",
219     "dist/i18n/jquery-ui-i18n.min.js": "ui/minified/i18n/jquery-ui-i18n.min.js",
220     "dist/jquery-ui.css": "themes/base/jquery-ui.css",
221     "dist/jquery-ui.min.css": "themes/base/minified/jquery-ui.min.css"
222     },
223     dest: "dist/<%= files.dist %>"
224     },
225     dist_min: {
226     src: "dist/minified/**/*",
227     strip: /^dist/,
228     dest: "dist/<%= files.dist %>/ui"
229     },
230     dist_css_min: {
231     src: "dist/themes/base/minified/*.css",
232     strip: /^dist/,
233     dest: "dist/<%= files.dist %>"
234     },
235     dist_units_images: {
236     src: "themes/base/images/*",
237     strip: /^themes\/base\//,
238     dest: "dist/"
239     },
240     dist_min_images: {
241     src: "themes/base/images/*",
242     strip: /^themes\/base\//,
243     dest: "dist/<%= files.dist %>/themes/base/minified"
244     },
245     cdn: {
246     src: [
247     "AUTHORS.txt",
248     "MIT-LICENSE.txt",
249     "ui/*.js",
250     "package.json"
251     ],
252     renames: {
253     "dist/jquery-ui.js": "jquery-ui.js",
254     "dist/jquery-ui.min.js": "jquery-ui.min.js",
255     "dist/i18n/jquery-ui-i18n.js": "i18n/jquery-ui-i18n.js",
256     "dist/i18n/jquery-ui-i18n.min.js": "i18n/jquery-ui-i18n.min.js"
257     },
258     dest: "dist/<%= files.cdn %>"
259     },
260     cdn_i18n: {
261     src: "ui/i18n/jquery.ui.datepicker-*.js",
262     strip: "ui/",
263     dest: "dist/<%= files.cdn %>"
264     },
265     cdn_i18n_min: {
266     src: "dist/minified/i18n/jquery.ui.datepicker-*.js",
267     strip: "dist/minified",
268     dest: "dist/<%= files.cdn %>"
269     },
270     cdn_min: {
271     src: "dist/minified/*.js",
272     strip: /^dist\/minified/,
273     dest: "dist/<%= files.cdn %>/ui"
274     },
275     cdn_themes: {
276     src: "dist/<%= files.themes %>/themes/**/*",
277     strip: "dist/<%= files.themes %>",
278     dest: "dist/<%= files.cdn %>"
279     },
280     themes: {
281     src: [
282     "AUTHORS.txt",
283     "MIT-LICENSE.txt",
284     "package.json"
285     ],
286     dest: "dist/<%= files.themes %>"
287     }
288     },
289     zip: {
290     dist: {
291     src: "<%= files.dist %>",
292     dest: "<%= files.dist %>.zip"
293     },
294     cdn: {
295     src: "<%= files.cdn %>",
296     dest: "<%= files.cdn %>.zip"
297     },
298     themes: {
299     src: "<%= files.themes %>",
300     dest: "<%= files.themes %>.zip"
301     }
302     },
303     md5: {
304     dist: {
305     src: "dist/<%= files.dist %>",
306     dest: "dist/<%= files.dist %>/MANIFEST"
307     },
308     cdn: {
309     src: "dist/<%= files.cdn %>",
310     dest: "dist/<%= files.cdn %>/MANIFEST"
311     },
312     themes: {
313     src: "dist/<%= files.themes %>",
314     dest: "dist/<%= files.themes %>/MANIFEST"
315     }
316     },
317     qunit: {
318     files: expandFiles( "tests/unit/**/*.html" ).filter(function( file ) {
319     // disabling everything that doesn't (quite) work with PhantomJS for now
320     // TODO except for all|index|test, try to include more as we go
321     return !( /(all|index|test|dialog|dialog_deprecated|tabs|tooltip)\.html$/ ).test( file );
322     })
323     },
324     jshint: {
325     ui: {
326     options: {
327     jshintrc: "ui/.jshintrc"
328     },
329     files: {
330     src: "ui/*.js"
331     }
332     },
333     grunt: {
334     options: {
335     jshintrc: ".jshintrc"
336     },
337     files: {
338     src: [ "Gruntfile.js", "build/**/*.js" ]
339     }
340     },
341     tests: {
342     options: {
343     jshintrc: "tests/.jshintrc"
344     },
345     files: {
346     src: "tests/unit/**/*.js"
347     }
348     }
349     },
350     csslint: {
351     base_theme: {
352     src: "themes/base/*.css",
353     options: {
354     "adjoining-classes": false,
355     "box-model": false,
356     "compatible-vendor-prefixes": false,
357     "duplicate-background-images": false,
358     "import": false,
359     "important": false,
360     "outline-none": false,
361     "overqualified-elements": false,
362     "text-indent": false
363     }
364     }
365     }
366     });
367    
368     grunt.registerTask( "default", [ "lint", "test" ] );
369     grunt.registerTask( "lint", [ "jshint", "csslint", "htmllint" ] );
370     grunt.registerTask( "test", [ "qunit" ] );
371     grunt.registerTask( "sizer", [ "concat:ui", "uglify:main", "compare_size:all" ] );
372     grunt.registerTask( "sizer_all", [ "concat:ui", "uglify", "compare_size" ] );
373     grunt.registerTask( "build", [ "concat", "uglify", "cssmin", "copy:dist_units_images" ] );
374     grunt.registerTask( "release", "clean build copy:dist copy:dist_min copy:dist_min_images copy:dist_css_min md5:dist zip:dist".split( " " ) );
375     grunt.registerTask( "release_themes", "release generate_themes copy:themes md5:themes zip:themes".split( " " ) );
376     grunt.registerTask( "release_cdn", "release_themes copy:cdn copy:cdn_min copy:cdn_i18n copy:cdn_i18n_min copy:cdn_themes md5:cdn zip:cdn".split( " " ) );
377    
378     };

  ViewVC Help
Powered by ViewVC 1.1.20