-
Notifications
You must be signed in to change notification settings - Fork 160
/
Gruntfile.js
104 lines (94 loc) · 2.2 KB
/
Gruntfile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
var path = require('path');
var normalize = function(depName, depLoad, curName, curLoad) {
depName = depName.substring(depName.indexOf('#') + 1, depName.length);
if(depName === 'dist/jquery') {
return 'jquery';
}
if(curLoad) {
depName = path.relative(path.dirname(curLoad.address), depLoad.address);
if(depName[0] !== '.') {
depName = './' + depName;
}
}
return depName;
};
module.exports = function (grunt) {
var _ = grunt.util._;
var builderJSON = grunt.file.readJSON('builder.json');
var pkg = grunt.file.readJSON('package.json');
grunt.initConfig({
jshint: {
options: {
jshintrc: true
},
lib: [
'dom/**/*.js', 'event/**/*.js', 'lang/**/*.js', 'test/**/*.js'
]
},
'steal-export': {
dist: {
system: {
config: "package.json!npm",
main: "jquerypp"
},
outputs: {
"cjs": {
graphs: ['jquerypp'],
format: 'cjs',
useNormalizedDependencies: true,
ignore: ['jquery'],
normalize: normalize,
dest: function(moduleName){
return path.join(__dirname, 'dist/cjs/' + normalize(moduleName) + '.js');
}
},
"amd": {
graphs: ['jquerypp'],
format: 'amd',
useNormalizedDependencies: true,
ignore: ['jquery'],
normalize: normalize,
dest: function(moduleName){
return path.join(__dirname, 'dist/amd/' + normalize(moduleName) + '.js');
}
},
"+global-js": {
ignore: ['jquery'],
exports: { 'jquery/jquery': 'jQuery' }
},
'min +global-js': {
minify: true,
dest: path.join(__dirname, 'dist/global/jquerypp.min.js')
}
}
}
},
usebanner: {
taskName: {
options: {
position: 'top',
banner: _.template(builderJSON.banner, {
pkg: pkg,
ids: [ 'jQuery++ dist build' ]
}),
linebreak: true
},
files: {
src: [ 'dist/**/*.js' ]
}
}
},
testee: {
options: {
browsers: [ 'firefox' ]
},
all: ['test.html']
}
});
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('testee');
grunt.loadNpmTasks('steal-tools');
grunt.loadNpmTasks('grunt-banner');
grunt.registerTask('test', ['testee']);
grunt.registerTask('build', ['steal-export', 'usebanner']);
};