1
1
/*global config:true, task:true*/
2
2
var coreFiles = 'jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.effects.core.js' . split ( ', ' ) ;
3
- var allFiles = coreFiles . map ( function ( file ) {
3
+ var uiFiles = coreFiles . map ( function ( file ) {
4
4
return 'ui/' + file ;
5
5
} ) . concat ( file . expand ( 'ui/*.js' ) . filter ( function ( file ) {
6
6
return coreFiles . indexOf ( file . substring ( 3 ) ) === - 1 ;
7
7
} ) ) ;
8
- var rawList = allFiles . map ( function ( file ) {
9
- return file . substring ( 3 ) ;
10
- } ) ;
11
8
12
9
var minify = {
13
10
'dist/ui/minified/jquery-ui.min.js' : [ '<banner:meta.bannerAll>' , 'dist/ui/jquery-ui.js' ] ,
@@ -16,19 +13,23 @@ var minify = {
16
13
function minFile ( file ) {
17
14
minify [ 'dist/' + file . replace ( / \. j s $ / , '.min.js' ) . replace ( / u i \/ / , 'ui/minified/' ) ] = [ '<banner>' , file ] ;
18
15
}
19
- allFiles . forEach ( minFile ) ;
16
+ uiFiles . forEach ( minFile ) ;
20
17
21
18
var allI18nFiles = file . expand ( 'ui/i18n/*.js' ) ;
22
19
allI18nFiles . forEach ( minFile ) ;
23
- var i18nfiles = allI18nFiles . map ( function ( file ) {
24
- return file . substring ( 8 ) ;
25
- } ) ;
20
+
21
+ // TODO move core to the front, theme to the end, exclude all and base
22
+ var cssFiles = file . expand ( 'themes/base/*.css' ) ;
26
23
27
24
function createBanner ( files ) {
25
+ // strip folders
26
+ var fileNames = files && files . map ( function ( file ) {
27
+ return file . replace ( / .+ \/ ( .+ ) $ / , '$1' ) ;
28
+ } ) ;
28
29
return '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
29
30
'<%= template.today("isoDate") %>\n' +
30
31
'<%= pkg.homepage ? "* " + pkg.homepage + "\n" : "" %>' +
31
- ( files ? '* Includes: ' + files . join ( ', ' ) + '\n' : '' ) +
32
+ ( files ? '* Includes: ' + fileNames . join ( ', ' ) + '\n' : '' ) +
32
33
'* Copyright (c) <%= template.today("yyyy") %> <%= pkg.author.name %>;' +
33
34
' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */' ;
34
35
}
@@ -37,14 +38,21 @@ config.init({
37
38
pkg : '<json:package.json>' ,
38
39
meta : {
39
40
banner : createBanner ( ) ,
40
- bannerAll : createBanner ( rawList ) ,
41
- bannerI18n : createBanner ( i18nfiles )
41
+ bannerAll : createBanner ( uiFiles ) ,
42
+ bannerI18n : createBanner ( allI18nFiles ) ,
43
+ bannerCSS : createBanner ( cssFiles )
42
44
} ,
43
45
concat : {
44
- 'dist/ui/jquery-ui.js' : allFiles ,
46
+ 'dist/ui/jquery-ui.js' : uiFiles ,
45
47
'dist/ui/i18n/jquery-ui-i18n.js' : 'ui/i18n/*.js'
46
48
} ,
47
49
min : minify ,
50
+ css_min : {
51
+ dist : {
52
+ src : [ '<banner:meta.bannerCSS>' ] . concat ( cssFiles ) ,
53
+ dest : 'dist/themes/base/minified/jquery-ui.min.css'
54
+ }
55
+ } ,
48
56
zip : {
49
57
dist : {
50
58
src : [
@@ -107,5 +115,26 @@ task.registerBasicTask('zip', 'Create a zip file for release', function(data) {
107
115
log . writeln ( "Wrote " + files . length + " files to " + data . dest ) ;
108
116
} ) ;
109
117
118
+ task . registerBasicTask ( 'css_min' , 'Minify CSS files with Sqwish.' , function ( data ) {
119
+ var files = file . expand ( data . src ) ;
120
+ // Get banner, if specified. It would be nice if UglifyJS supported ignoring
121
+ // all comments matching a certain pattern, like /*!...*/, but it doesn't.
122
+ var banner = task . directive ( files [ 0 ] , function ( ) { return null ; } ) ;
123
+ if ( banner === null ) {
124
+ banner = '' ;
125
+ } else {
126
+ files . shift ( ) ;
127
+ }
128
+ var max = task . helper ( 'concat' , files ) ;
129
+ // Concat banner + minified source.
130
+ var min = banner + require ( 'sqwish' ) . minify ( max , false ) ;
131
+ file . write ( data . dest , min ) ;
132
+ if ( task . hadErrors ( ) ) {
133
+ return false ;
134
+ }
135
+ log . writeln ( 'File "' + data . dest + '" created.' ) ;
136
+ task . helper ( 'min_max_info' , min , max ) ;
137
+ } ) ;
138
+
110
139
task . registerTask ( 'default' , 'lint qunit' ) ;
111
140
task . registerTask ( 'release' , 'concat min zip' ) ;
0 commit comments