1
1
/*global module:false*/
2
+
2
3
module . exports = function ( grunt ) {
3
4
5
+ // Path to private settings (used here for user/pwd to rsync to remote site)
6
+
7
+
8
+ // Because I'm lazy
9
+ var _ = grunt . util . _ ;
10
+
4
11
// Project configuration.
5
12
grunt . initConfig ( {
6
- pkg : grunt . file . readJSON ( 'smooth-scroll.jquery.json' ) ,
7
13
component : './component.json' ,
14
+ pkg : grunt . file . readJSON ( 'smooth-scroll.jquery.json' ) ,
8
15
meta : {
9
- banner : '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
16
+ banner : '/*!<%= "\\n" %>' +
17
+ ' * <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
10
18
'<%= grunt.template.today("yyyy-mm-dd") + "\\n" %>' +
11
- '<%= pkg.homepage ? "* " + pkg.homepage + "\\n" : "" %>' +
12
- '* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' +
13
- ' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */' +
14
- '<%= "\\n\\n" %>' ,
15
- version : '\\n \\nvar version = <%= pkg.version %>;\\n'
19
+ '<%= pkg.homepage ? " * " + pkg.homepage + "\\n" : "" %>' +
20
+ ' * Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>' +
21
+ '<%= "\\n" %>' +
22
+ ' * Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %>' +
23
+ ' (<%= _.pluck(pkg.licenses, "url").join(", ") %>)' +
24
+ '<%= "\\n" %>' + ' */' +
25
+ '<%= "\\n\\n" %>'
16
26
} ,
17
27
concat : {
18
28
all : {
@@ -30,17 +40,30 @@ module.exports = function(grunt) {
30
40
'jquery.<%= pkg.name %>.min.js' : [ '<%= concat.all.dest %>' ]
31
41
} ,
32
42
options : {
33
- preserveComments : false ,
34
- banner : '<%= meta.banner %>'
43
+ preserveComments : 'some'
35
44
}
36
45
}
37
46
} ,
38
47
watch : {
39
- files : '<config:lint.files>' ,
40
- tasks : 'lint'
48
+ scripts : {
49
+ files : '<%= jshint.all %>' ,
50
+ tasks : [ 'jshint:all' ]
51
+ }
52
+ } ,
53
+ shell : {
54
+ rsync : {
55
+ // command is set by setshell:rsync.
56
+ stdout : true
57
+ }
58
+ } ,
59
+ setshell : {
60
+ rsync : {
61
+ file : 'gitignore/settings.json' ,
62
+ cmdAppend : '<%= pkg.name %>/'
63
+ }
41
64
} ,
42
65
jshint : {
43
- files : [ 'grunt .js' , 'src/**/*.js' ] ,
66
+ all : [ 'Gruntfile .js' , 'src/**/*.js' ] ,
44
67
options : {
45
68
curly : true ,
46
69
// eqeqeq: true,
@@ -57,60 +80,92 @@ module.exports = function(grunt) {
57
80
jQuery : true
58
81
}
59
82
}
83
+ } ,
84
+ version : {
85
+ patch : {
86
+ src : [
87
+ '<%= pkg.name %>.jquery.json' ,
88
+ 'package.json' ,
89
+ 'src/jquery.<%= pkg.name %>.js' ,
90
+ 'jquery.<%= pkg.name %>.js'
91
+ ] ,
92
+ options : {
93
+ release : 'patch'
94
+ }
95
+ } ,
96
+ same : {
97
+ src : [ 'package.json' , 'src/jquery.<%= pkg.name %>.js' , 'jquery.<%= pkg.name %>.js' ]
98
+ } ,
99
+ bannerPatch : {
100
+ src : [ 'jquery.<%= pkg.name %>.js' ] ,
101
+ options : {
102
+ prefix : '- v' ,
103
+ release : 'patch'
104
+ }
105
+ }
60
106
}
61
107
} ) ;
62
108
63
- // Default task.
64
- grunt . registerTask ( 'build' , [ 'jshint' , 'concat' , 'version' , 'component' , 'uglify' ] ) ;
109
+ grunt . registerMultiTask ( 'setshell' , 'Set grunt shell commands' , function ( ) {
110
+ var settings , cmd ,
111
+ tgt = this . target ,
112
+ cmdLabel = 'shell.' + tgt + '.command' ,
113
+ file = this . data . file ,
114
+ append = this . data . cmdAppend || '' ;
65
115
66
- grunt . registerTask ( 'component' , 'update component.json' , function ( ) {
116
+ if ( ! grunt . file . exists ( file ) ) {
117
+ grunt . warn ( 'File does not exist: ' + file ) ;
118
+ }
119
+
120
+ settings = grunt . file . readJSON ( file ) ;
121
+ if ( ! settings [ tgt ] ) {
122
+ grunt . warn ( 'No ' + tgt + ' property found in ' + file ) ;
123
+ }
124
+
125
+ cmd = settings [ tgt ] + append ;
126
+ grunt . config ( cmdLabel , cmd ) ;
127
+ grunt . log . writeln ( ( 'Setting ' + cmdLabel + ' to:' ) . cyan ) ;
128
+
129
+ grunt . log . writeln ( cmd ) ;
130
+
131
+ } ) ;
132
+
133
+ grunt . registerTask ( 'deploy' , [ 'setshell:rsync' , 'shell:rsync' ] ) ;
134
+
135
+ grunt . registerTask ( 'component' , 'Update component.json' , function ( ) {
67
136
var comp = grunt . config ( 'component' ) ,
68
- pkg = grunt . config ( "pkg" ) ,
137
+ pkgName = grunt . config ( 'pkg' ) . name ,
138
+ pkg = grunt . file . readJSON ( pkgName + '.jquery.json' ) ,
69
139
json = { } ;
70
140
141
+
142
+
71
143
[ 'name' , 'version' , 'dependencies' ] . forEach ( function ( el ) {
72
144
json [ el ] = pkg [ el ] ;
73
145
} ) ;
74
146
75
- json . main = grunt . config ( 'concat.all.dest' ) ;
76
- json . ignore = [
77
- 'demo/' ,
78
- 'lib/' ,
79
- 'src/' ,
80
- '*.json'
81
- ] ;
147
+ _ . extend ( json , {
148
+ main : grunt . config ( 'concat.all.dest' ) ,
149
+ ignore : [
150
+ 'demo/' ,
151
+ 'lib/' ,
152
+ 'src/' ,
153
+ '*.json'
154
+ ]
155
+ } ) ;
156
+ json . name = 'jquery.' + json . name ;
82
157
83
158
grunt . file . write ( comp , JSON . stringify ( json , null , 2 ) ) ;
84
-
85
159
grunt . log . writeln ( "File '" + comp + "' updated." ) ;
86
160
} ) ;
87
161
88
- grunt . registerTask ( 'version' , 'insert version' , function ( ) {
89
- // Concat specified files.
90
- var name = grunt . config ( 'concat.all.dest' ) ,
91
- pkg = grunt . config ( "pkg" ) ,
92
- compiled = grunt . file . read ( name ) ,
93
- version = "version = '" + pkg . version + "'" ;
94
-
95
- // compiled = '/* concatenated files:\n' + this.file.src.join(', ') + '\n*/\n\n' + compiled;
96
-
97
- // Embed Version
98
- compiled = compiled . replace ( / v e r s i o n = ' [ ^ ' ] + ' / , version ) ;
99
- // Write concatenated source to file
100
- grunt . file . write ( name , compiled ) ;
101
-
102
- // Fail task if errors were logged.
103
- if ( this . errorCount ) {
104
- return false ;
105
- }
106
-
107
- // Otherwise, print a success message.
108
- grunt . log . writeln ( "File '" + name + "' created." ) ;
109
-
110
- } ) ;
162
+ grunt . registerTask ( 'build' , [ 'jshint' , 'concat' , 'version:same' , 'component' , 'uglify' ] ) ;
163
+ grunt . registerTask ( 'patch' , [ 'jshint' , 'concat' , 'version:bannerPatch' , 'version:patch' , 'component' , 'uglify' ] ) ;
164
+ grunt . registerTask ( 'default' , [ 'build' ] ) ;
111
165
112
166
grunt . loadNpmTasks ( 'grunt-contrib-jshint' ) ;
113
167
grunt . loadNpmTasks ( 'grunt-contrib-uglify' ) ;
114
168
grunt . loadNpmTasks ( 'grunt-contrib-concat' ) ;
115
-
169
+ grunt . loadNpmTasks ( 'grunt-version' ) ;
170
+ grunt . loadNpmTasks ( 'grunt-shell' ) ;
116
171
} ;
0 commit comments