forked from olooney/deep-copy-js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGruntfile.js
127 lines (116 loc) · 3.05 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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
'use strict';
module.exports = function (grunt) {
// Load grunt tasks
require('load-grunt-tasks')(grunt);
// Time how long tasks take. Can help when optimizing build times
require('time-grunt')(grunt);
var fs = require('fs');
// Define the configuration for all the tasks
grunt.initConfig({
copy: {
dist: {
expand: true,
cwd: 'src',
src: ['deepCopy.js'],
dest: 'dist/'
}
},
uglify: {
dist: {
files: {
'dist/deepCopy.min.js': ['dist/deepCopy.js']
},
options: {
banner: '/* Copyright 2015 Oran Looney. https://github.com/olooney/deep-copy-js/blob/master/LICENSE.txt */\n'
}
}
},
jshint: {
options: {
jshintrc: '.jshintrc',
reporter: require('jshint-stylish')
},
all: {
src: [
'Gruntfile.js',
'src/**/*.js'
]
},
test: {
options: {
jshintrc: 'test/.jshintrc'
},
src: ['test/**/*.js']
}
},
karma: {
options: {
captureTimeout: 60000 * 5,
singleRun: true,
frameworks: ['jasmine', 'sinon'],
files: [
'src/deepCopy.js',
'test/spec/**.*.js'
],
preprocessors: {
'src/deepCopy.js': 'coverage'
},
coverageReporter: {
type: 'html'
},
sauceLabs: {
username: process.env.SAUCE_USERNAME,
accessKey: process.env.SAUCE_ACCESS_KEY,
testName: 'deep-copy-js, browser: ' + process.env.BROWSER
},
reporters: ['saucelabs', 'coverage', 'mocha'],
customLaunchers: JSON.parse(fs.readFileSync('test/browsers.json'))
},
continuous: {
browsers: ['PhantomJS']
},
sauceTask: (function() {
var config = {
browsers: [
process.env.BROWSER
]
};
if (process.env.BROWSER === 'ie6') {
// Support IE6: Default socket.io transport doesn't work on IE6
config.transports = [ 'jsonp-polling' ];
}
return config;
})(),
// Testers for dist build files
dist: {
options: {
browsers: [
'PhantomJS'
],
files: [
'dist/deepCopy.js',
'test/spec/**/*.js'
]
}
},
distMin: {
options: {
browsers: [
'PhantomJS'
],
files: [
'dist/deepCopy.min.js',
'test/spec/**/*.js'
]
}
}
}
});
var usePhantom = process.env.TRAVIS_PULL_REQUEST !== 'false' || process.env.BROWSER === 'phantomjs';
var tasks = ['newer:jshint','copy', 'uglify'];
var travisTasks = usePhantom ? tasks.concat('karma:continuous') : tasks.concat('karma:sauceTask');
var distTasks = tasks.concat(['karma:dist', 'karma:distMin']);
grunt.registerTask('default', tasks.concat('karma:continuous'));
grunt.registerTask('default:travis', travisTasks);
grunt.registerTask('distBuild', distTasks);
};