1
- /*jshint node: true */
1
+ /*jshint node: true, camelcase: false */
2
2
3
3
"use strict" ;
4
4
5
5
module . exports = function ( grunt ) {
6
6
7
7
grunt . initConfig ( {
8
8
pkg : grunt . file . readJSON ( "package.json" ) ,
9
+ compare_size : {
10
+ files : [
11
+ "jquery.ui-contextmenu.min.js" ,
12
+ "jquery.ui-contextmenu.js"
13
+ ] ,
14
+ options : {
15
+ compress : {
16
+ gz : function ( fileContents ) {
17
+ return require ( "gzip-js" ) . zip ( fileContents , { } ) . length ;
18
+ }
19
+ }
20
+ }
21
+ } ,
22
+ connect : {
23
+ demo : {
24
+ options : {
25
+ hostname : "*" , // make accessible from everywhere
26
+ port : 8080 ,
27
+ base : "./" ,
28
+ keepalive : true
29
+ }
30
+ } ,
31
+ sauce : {
32
+ options : {
33
+ port : 9999 ,
34
+ base : ""
35
+ }
36
+ }
37
+ } ,
9
38
exec : {
10
39
tabfix : {
11
40
// Cleanup whitespace according to http://contribute.jquery.org/style-guide/js/
@@ -18,9 +47,6 @@ module.exports = function (grunt) {
18
47
cmd : "pyftpsync --progress upload . ftp://www.wwwendt.de/tech/demo/jquery-contextmenu --delete-unmatched --omit dist,node_modules,.*,_* -x"
19
48
}
20
49
} ,
21
- qunit : {
22
- all : [ "test/index.html" ]
23
- } ,
24
50
jshint : {
25
51
files : [
26
52
"Gruntfile.js" ,
@@ -31,47 +57,73 @@ module.exports = function (grunt) {
31
57
jshintrc : ".jshintrc"
32
58
}
33
59
} ,
60
+ qunit : {
61
+ all : [ "test/index.html" ]
62
+ } ,
63
+ "saucelabs-qunit" : {
64
+ all : {
65
+ options : {
66
+ urls : [ "http://128.0.0.1:9999/test/index.html" ] ,
67
+ // username: process.env.SAUCE_USERNAME,
68
+ // key: process.env.SAUCE_ACCESS_KEY,
69
+ tunnelTimeout : 5 ,
70
+ build : process . env . TRAVIS_JOB_ID ,
71
+ concurrency : 3 ,
72
+ browsers : [
73
+ // { browserName: "safari", platform: "OS X 10.8"},
74
+ // { browserName: "firefox", platform: "Windows 7"},
75
+ // { browserName: "firefox", platform: "Windows XP"},
76
+ { browserName : "firefox" , platform : "Linux" }
77
+ // { browserName: "chrome", platform: "Windows 7"},
78
+ // { browserName: "internet explorer", platform: "Windows 8", version: "10" },
79
+ // { browserName: "internet explorer", platform: "Windows 7", version: "9" }
80
+ ] ,
81
+ testname : "jquery.ui-contextmenu qunit tests"
82
+ }
83
+ }
84
+ } ,
34
85
uglify : {
35
86
options : {
36
87
banner : "/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - " +
37
- "<%= grunt.template.today('yyyy-mm-dd') %> | " +
38
- "<%= pkg.homepage ? ' ' + pkg.homepage + ' | ' : '' %>" +
39
- " Copyright (c) <%= grunt.template.today('yyyy') %> <%= pkg.author.name %>;" +
40
- " Licensed <%= _.pluck(pkg.licenses, 'type').join(', ') %> */\n"
88
+ "<%= grunt.template.today('yyyy-mm-dd') %> | " +
89
+ "<%= pkg.homepage ? ' ' + pkg.homepage + ' | ' : '' %>" +
90
+ " Copyright (c) <%= grunt.template.today('yyyy') %> <%= pkg.author.name %>;" +
91
+ " Licensed <%= _.pluck(pkg.licenses, 'type').join(', ') %> */\n" ,
92
+ report : "gzip"
41
93
} ,
42
94
build : {
43
95
src : "jquery.ui-contextmenu.js" ,
44
96
// dest: "build/jquery.ui-contextmenu-<%= pkg.version %>.min.js"
45
97
dest : "jquery.ui-contextmenu.min.js"
46
98
}
47
- } ,
48
- connect : {
49
- demo : {
50
- options : {
51
- hostname : "*" , // make accessible from everywhere
52
- port : 8080 ,
53
- base : "./" ,
54
- keepalive : true
55
- }
56
- }
57
99
}
58
100
} ) ;
59
101
60
- grunt . loadNpmTasks ( "grunt-contrib-connect" ) ;
61
- grunt . loadNpmTasks ( "grunt-contrib-jshint" ) ;
62
- grunt . loadNpmTasks ( "grunt-contrib-qunit" ) ;
63
- grunt . loadNpmTasks ( "grunt-contrib-uglify" ) ;
64
- grunt . loadNpmTasks ( "grunt-contrib-connect" ) ;
65
- grunt . loadNpmTasks ( "grunt-exec" ) ;
66
-
102
+ // Loadi "grunt*" dependencies
103
+ for ( var key in grunt . file . readJSON ( "package.json" ) . devDependencies ) {
104
+ if ( key !== "grunt" && key . indexOf ( "grunt" ) === 0 ) {
105
+ grunt . loadNpmTasks ( key ) ;
106
+ }
107
+ }
67
108
grunt . registerTask ( "server" , [ "connect:demo" ] ) ;
68
109
grunt . registerTask ( "test" , [ "jshint" ,
69
110
"qunit" ] ) ;
111
+
112
+ //
113
+ // See
114
+ // https://saucelabs.com/docs/javascript-unit-testing-tutorial
115
+ //
116
+ grunt . registerTask ( "saucelabs" , [ "connect:sauce" ,
117
+ "saucelabs-qunit" ] ) ;
118
+
70
119
grunt . registerTask ( "travis" , [ "test" ] ) ;
71
120
grunt . registerTask ( "default" , [ "test" ] ) ;
72
121
grunt . registerTask ( "build" , [ "exec:tabfix" ,
73
122
"test" ,
74
- "uglify" ] ) ;
123
+ "uglify" ,
124
+ "compare_size"
125
+ // "saucelabs"
126
+ ] ) ;
75
127
grunt . registerTask ( "upload" , [ "build" ,
76
128
"exec:upload" ] ) ;
77
129
grunt . registerTask ( "server" , [ "connect:demo" ] ) ;
0 commit comments