@@ -3,52 +3,75 @@ module.exports = function (grunt)
33{
44 "use strict" ;
55
6+ /* Hint: Using grunt-strip-code to remove comments from the release file */
7+
68 grunt . initConfig ( {
79 pkg : grunt . file . readJSON ( 'package.json' ) ,
810 concat : {
11+ options : {
12+ separator : '\r\n\r\n' ,
13+ banner : '/*! <%= "\\r\\n * " + pkg.title %> v<%= pkg.version %> - <%= grunt.template.today("mm/dd/yyyy") + "\\r\\n" %>' +
14+ ' * Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %> <%= (pkg.homepage ? "(" + pkg.homepage + ")" : "") + "\\r\\n" %>' +
15+ ' * Licensed under <%= pkg.licenses[0].type + " " + pkg.licenses[0].url + "\\r\\n */\\r\\n" %>' +
16+ ';(function ($, undefined)\r\n{\r\n' ,
17+ footer : '\r\n})(jQuery);'
18+ } ,
919 dist : {
1020 files : {
11- 'dist/jquery.steps.js' : [ 'jquery.steps.js' ]
21+ '<%= pkg.folders.dist %>/jquery.steps.js' : [
22+ '<%= pkg.folders.src %>/privates.js' ,
23+ '<%= pkg.folders.src %>/publics.js' ,
24+ '<%= pkg.folders.src %>/enums.js' ,
25+ '<%= pkg.folders.src %>/model.js' ,
26+ '<%= pkg.folders.src %>/defaults.js' ,
27+ '<%= pkg.folders.src %>/helper.js'
28+ ]
1229 }
1330 }
1431 } ,
15- uglify : {
16- options : {
17- preserveComments : false ,
18- banner : '/*! <%= "\\r\\n * " + pkg.name %> v<%= pkg.version %> - <%= grunt.template.today("mm/dd/yyyy") + "\\r\\n" %>' +
19- ' * Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %> <%= (pkg.homepage ? "(" + pkg.homepage + ")" : "") + "\\r\\n" %>' +
20- ' * Licensed under <%= pkg.licenses[0].type + " " + pkg.licenses[0].url + "\\r\\n */\\r\\n" %>'
21- } ,
32+ "regex-replace" : {
2233 all : {
23- files : {
24- 'dist/jquery.steps.min.js' : [ 'dist/jquery.steps.js' ]
25- }
34+ src : [ '<%= pkg.folders.dist %>/jquery.steps.js' ] ,
35+ actions : [
36+ {
37+ name : 'multiLineComments' ,
38+ search : / \/ \* [ ^ ! ] ( .| \r | \n ) * ?\* \/ \r \n ? / gim,
39+ replace : ''
40+ } ,
41+ {
42+ name : 'singleLineComment' ,
43+ search : / ^ \s * ?[ ^ h t t p : \/ \/ ] \/ \/ .* \r \n ? / gi,
44+ replace : ''
45+ } ,
46+ {
47+ name : 'singleLineCommentSameLine' ,
48+ search : / [ ^ h t t p : \/ \/ ] \/ \/ .* / gi,
49+ replace : ''
50+ }
51+ ]
2652 }
2753 } ,
2854 compress : {
2955 main : {
3056 options : {
31- archive : 'dist/ <%= pkg.name %>-<%= pkg.version %>.zip'
57+ archive : '<%= pkg.folders.dist %>/jquery.steps -<%= pkg.version %>.zip'
3258 } ,
3359 files : [
34- {
35- src : [
36- 'README.md' ,
37- /*'changelog.txt',*/
38- 'docs/**/*.*' ,
39- 'demo/**/*.*' ,
40- 'lib/*.*' ,
41- 'test/**/*.*'
42- ]
43- } ,
44- {
45- flatten : true ,
46- src : [ 'dist/*.js' ] ,
47- filter : 'isFile'
48- }
60+ { flatten : true , expand : true , src : [ '<%= pkg.folders.dist %>/*.js' ] , dest : '/' }
4961 ]
5062 }
5163 } ,
64+ uglify : {
65+ options : {
66+ preserveComments : 'some' ,
67+ report : 'gzip'
68+ } ,
69+ all : {
70+ files : {
71+ '<%= pkg.folders.dist %>/jquery.steps.min.js' : [ '<%= pkg.folders.dist %>/jquery.steps.js' ]
72+ }
73+ }
74+ } ,
5275 qunit : {
5376 files : [ 'test/index.html' ]
5477 } ,
@@ -70,9 +93,7 @@ module.exports = function (grunt)
7093 console : true
7194 }
7295 } ,
73- files : [
74- 'jquery.steps.js'
75- ] ,
96+ files : [ '<%= pkg.folders.dist %>/jquery.steps.js' ] ,
7697 test : {
7798 options : {
7899 globals : {
@@ -113,22 +134,27 @@ module.exports = function (grunt)
113134 options : {
114135 exclude : 'qunit-1.11.0.js' ,
115136 paths : '.' ,
116- outdir : 'docs/'
137+ outdir : '<%= pkg.folders. docs %> /'
117138 }
118139 }
119140 } ,
120- clean : [ "dist" , "docs" ]
141+ clean : {
142+ api : [ "<%= pkg.folders.docs %>" ] ,
143+ build : [ "<%= pkg.folders.dist %>" ]
144+ }
121145 } ) ;
122146
123147 grunt . loadNpmTasks ( 'grunt-contrib-jshint' ) ;
124148 grunt . loadNpmTasks ( 'grunt-contrib-qunit' ) ;
125149 grunt . loadNpmTasks ( 'grunt-contrib-uglify' ) ;
126150 grunt . loadNpmTasks ( 'grunt-contrib-concat' ) ;
127151 grunt . loadNpmTasks ( 'grunt-contrib-yuidoc' ) ;
128- grunt . loadNpmTasks ( 'grunt-contrib-compress' ) ;
129152 grunt . loadNpmTasks ( 'grunt-contrib-clean' ) ;
153+ grunt . loadNpmTasks ( 'grunt-contrib-compress' ) ;
154+ grunt . loadNpmTasks ( 'grunt-regex-replace' ) ;
130155
131- grunt . registerTask ( 'default' , [ 'jshint' , 'qunit' ] ) ;
132- grunt . registerTask ( 'api' , [ 'clean' , 'yuidoc' ] ) ;
133- grunt . registerTask ( 'release' , [ 'default' , 'api' , 'concat' , 'uglify' , 'compress' ] ) ;
156+ grunt . registerTask ( 'default' , [ 'build' ] ) ;
157+ grunt . registerTask ( 'api' , [ 'clean:api' , 'yuidoc' ] ) ;
158+ grunt . registerTask ( 'build' , [ 'clean:build' , 'concat' , 'regex-replace' , 'jshint' , 'qunit' ] ) ;
159+ grunt . registerTask ( 'release' , [ 'build' , 'api' , 'uglify' , 'compress' ] ) ;
134160} ;
0 commit comments