You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
212 lines
7.1 KiB
212 lines
7.1 KiB
module.exports = function (grunt) {
|
|
grunt.initConfig({
|
|
pkg: grunt.file.readJSON('package.json'),
|
|
env : {
|
|
sauceLabs : (grunt.file.exists('.sauce-labs.creds') ?
|
|
grunt.file.readJSON('.sauce-labs.creds') : {})
|
|
},
|
|
karma : {
|
|
options: {
|
|
browserNoActivityTimeout: 60000,
|
|
browserDisconnectTimeout: 10000,
|
|
browserDisconnectTolerance: 2,
|
|
frameworks: ['qunit'],
|
|
files: [
|
|
'min/moment-with-locales.js',
|
|
'min/tests.js'
|
|
],
|
|
sauceLabs: {
|
|
startConnect: true,
|
|
testName: 'MomentJS'
|
|
},
|
|
customLaunchers: {
|
|
slChromeWinXp: {
|
|
base: 'SauceLabs',
|
|
browserName: 'chrome',
|
|
platform: 'Windows XP'
|
|
},
|
|
slIe10Win7: {
|
|
base: 'SauceLabs',
|
|
browserName: 'internet explorer',
|
|
platform: 'Windows 7',
|
|
version: '10'
|
|
},
|
|
slIe9Win7: {
|
|
base: 'SauceLabs',
|
|
browserName: 'internet explorer',
|
|
platform: 'Windows 7',
|
|
version: '9'
|
|
},
|
|
slIe8Win7: {
|
|
base: 'SauceLabs',
|
|
browserName: 'internet explorer',
|
|
platform: 'Windows 7',
|
|
version: '8'
|
|
},
|
|
slIe11Win10: {
|
|
base: 'SauceLabs',
|
|
browserName: 'internet explorer',
|
|
platform: 'Windows 10',
|
|
version: '11'
|
|
},
|
|
slME25Win10: {
|
|
base: 'SauceLabs',
|
|
browserName: 'MicrosoftEdge',
|
|
platform: 'Windows 10',
|
|
version: '20.10240'
|
|
},
|
|
slFfLinux: {
|
|
base: 'SauceLabs',
|
|
browserName: 'firefox',
|
|
platform: 'Linux'
|
|
},
|
|
slSafariOsx: {
|
|
base: 'SauceLabs',
|
|
browserName: 'safari',
|
|
platform: 'OS X 10.8'
|
|
},
|
|
slSafariOsx11: {
|
|
base: 'SauceLabs',
|
|
browserName: 'safari',
|
|
platform: 'OS X 10.11'
|
|
}
|
|
}
|
|
},
|
|
server: {
|
|
browsers: []
|
|
},
|
|
chrome: {
|
|
singleRun: true,
|
|
browsers: ['Chrome']
|
|
},
|
|
firefox: {
|
|
singleRun: true,
|
|
browsers: ['Firefox']
|
|
},
|
|
sauce: {
|
|
options: {
|
|
reporters: ['dots']
|
|
},
|
|
singleRun: true,
|
|
browsers: [
|
|
'slChromeWinXp',
|
|
'slIe10Win7',
|
|
'slIe9Win7',
|
|
'slIe8Win7',
|
|
'slIe11Win10',
|
|
'slME25Win10',
|
|
'slFfLinux',
|
|
'slSafariOsx'
|
|
]
|
|
}
|
|
},
|
|
uglify : {
|
|
main: {
|
|
files: {
|
|
'min/moment-with-locales.min.js' : 'min/moment-with-locales.js',
|
|
'min/locales.min.js' : 'min/locales.js',
|
|
'min/moment.min.js' : 'moment.js'
|
|
}
|
|
},
|
|
options: {
|
|
mangle: true,
|
|
compress: {
|
|
dead_code: false // jshint ignore:line
|
|
},
|
|
output: {
|
|
ascii_only: true // jshint ignore:line
|
|
},
|
|
report: 'min',
|
|
preserveComments: /^!|@preserve|@license|@cc_on/i
|
|
}
|
|
},
|
|
jshint: {
|
|
all: [
|
|
'Gruntfile.js',
|
|
'tasks/**.js',
|
|
'src/**/*.js'
|
|
],
|
|
options: {
|
|
jshintrc: true
|
|
}
|
|
},
|
|
jscs: {
|
|
all: [
|
|
'Gruntfile.js',
|
|
'tasks/**.js',
|
|
'src/**/*.js'
|
|
],
|
|
options: {
|
|
config: '.jscs.json'
|
|
}
|
|
},
|
|
watch : {
|
|
test : {
|
|
files : [
|
|
'src/**/*.js'
|
|
],
|
|
tasks: ['test']
|
|
},
|
|
jshint : {
|
|
files : '<%= jshint.all %>',
|
|
tasks: ['jshint']
|
|
}
|
|
},
|
|
benchmark: {
|
|
all: {
|
|
src: ['benchmarks/*.js']
|
|
}
|
|
},
|
|
exec: {
|
|
'meteor-init': {
|
|
// Make sure Meteor is installed, per https://meteor.com/install.
|
|
// The curl'ed script is safe; takes 2 minutes to read source & check.
|
|
command: 'type meteor >/dev/null 2>&1 || { curl https://install.meteor.com/ | sh; }'
|
|
},
|
|
'meteor-test': {
|
|
command: 'spacejam --mongo-url mongodb:// test-packages ./meteor'
|
|
},
|
|
'meteor-publish': {
|
|
command: 'cd meteor && meteor publish'
|
|
},
|
|
'typescript-test': {
|
|
command: 'npm run typescript-test'
|
|
}
|
|
}
|
|
|
|
});
|
|
|
|
grunt.loadTasks('tasks');
|
|
|
|
// These plugins provide necessary tasks.
|
|
require('load-grunt-tasks')(grunt);
|
|
|
|
// Default task.
|
|
grunt.registerTask('default', ['lint', 'test']);
|
|
|
|
// linting
|
|
grunt.registerTask('lint', ['jshint', 'jscs']);
|
|
|
|
// test tasks
|
|
grunt.registerTask('test', ['test:node', 'test:typescript']);
|
|
grunt.registerTask('test:node', ['transpile', 'qtest']);
|
|
grunt.registerTask('test:typescript', ['exec:typescript-test']);
|
|
// TODO: For some weird reason karma doesn't like the files in
|
|
// build/umd/min/* but works with min/*, so update-index, then git checkout
|
|
grunt.registerTask('test:server', ['transpile', 'update-index', 'karma:server']);
|
|
grunt.registerTask('test:browser', ['transpile', 'update-index', 'karma:chrome', 'karma:firefox']);
|
|
grunt.registerTask('test:sauce-browser', ['transpile', 'update-index', 'env:sauceLabs', 'karma:sauce']);
|
|
grunt.registerTask('test:meteor', ['exec:meteor-init', 'exec:meteor-test', 'exec:meteor-cleanup']);
|
|
|
|
// travis build task
|
|
grunt.registerTask('build:travis', ['default']);
|
|
grunt.registerTask('meteor-publish', ['exec:meteor-init', 'exec:meteor-publish', 'exec:meteor-cleanup']);
|
|
|
|
// Task to be run when releasing a new version
|
|
grunt.registerTask('release', [
|
|
'default',
|
|
'update-index',
|
|
'component',
|
|
'uglify:main'
|
|
]);
|
|
};
|
|
|