Gruntfile.js
/*jshint node:true, quotmark:single */
'use strict';
module.exports = function (grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
qunit: {
all: 'test/index.html'
},
jshint: {
options: {
jshintrc: true
},
grunt: 'Gruntfile.js',
source: 'src/**/*.js',
tests: 'test/**/*.js'
},
uglify: {
options: {
banner: '/*! <%= pkg.name %> v<%= pkg.version %> | <%= pkg.license %> */\n'
},
build: {
files: {
'build/jquery.cookie-<%= pkg.version %>.min.js': 'src/jquery.cookie.js'
}
}
},
watch: {
options: {
livereload: true
},
files: '{src,test}/**/*.js',
tasks: 'default'
},
compare_size: {
files: [
'build/jquery.cookie-<%= pkg.version %>.min.js',
'src/jquery.cookie.js'
],
options: {
compress: {
gz: function (fileContents) {
return require('gzip-js').zip(fileContents, {}).length;
}
}
}
},
connect: {
saucelabs: {
options: {
port: 9999,
base: ['.', 'test']
}
},
tests: {
options: {
port: 9998,
base: ['.', 'test'],
open: 'http://127.0.0.1:9998',
keepalive: true,
livereload: true
}
}
},
'saucelabs-qunit': {
all: {
options: {
urls: ['http://127.0.0.1:9999'],
build: process.env.TRAVIS_JOB_ID,
browsers: [
// iOS
{
browserName: 'iphone',
platform: 'OS X 10.9',
version: '7.1'
},
{
browserName: 'ipad',
platform: 'OS X 10.9',
version: '7.1'
},
// Android
{
browserName: 'android',
platform: 'Linux',
version: '4.3'
},
// OS X
{
browserName: 'safari',
platform: 'OS X 10.9',
version: '7'
},
{
browserName: 'safari',
platform: 'OS X 10.8',
version: '6'
},
{
browserName: 'firefox',
platform: 'OS X 10.9',
version: '28'
},
// Windows
{
browserName: 'internet explorer',
platform: 'Windows 8.1',
version: '11'
},
{
browserName: 'internet explorer',
platform: 'Windows 8',
version: '10'
},
{
browserName: 'internet explorer',
platform: 'Windows 7',
version: '11'
},
{
browserName: 'internet explorer',
platform: 'Windows 7',
version: '10'
},
{
browserName: 'internet explorer',
platform: 'Windows 7',
version: '9'
},
{
browserName: 'internet explorer',
platform: 'Windows 7',
version: '8'
},
{
browserName: 'firefox',
platform: 'Windows 7',
version: '29'
},
{
browserName: 'chrome',
platform: 'Windows 7',
version: '34'
},
// Linux
{
browserName: 'firefox',
platform: 'Linux',
version: '29'
}
]
}
}
}
});
// Loading dependencies
for (var key in grunt.file.readJSON('package.json').devDependencies) {
if (key !== 'grunt' && key.indexOf('grunt') === 0) {
grunt.loadNpmTasks(key);
}
}
grunt.registerTask('default', ['jshint', 'qunit', 'uglify', 'compare_size']);
grunt.registerTask('saucelabs', ['connect:saucelabs', 'saucelabs-qunit']);
grunt.registerTask('ci', ['jshint', 'qunit', 'saucelabs']);
};