227 lines
7.1 KiB
JavaScript
Executable File
227 lines
7.1 KiB
JavaScript
Executable File
module.exports = function (grunt) {
|
|
var embedOption = grunt.option('embedLocales'),
|
|
embedLocaleDest = embedOption ?
|
|
'min/moment-with-customlocales.js' :
|
|
'min/moment-with-locales.js',
|
|
embedLocaleSrc = 'locale/*.js';
|
|
|
|
if (embedOption && embedOption.match(/,/)) {
|
|
embedLocaleSrc = 'locale/{' + embedOption + '}.js';
|
|
}
|
|
else if (embedOption) {
|
|
embedLocaleSrc = 'locale/' + embedOption + '.js';
|
|
}
|
|
|
|
grunt.initConfig({
|
|
pkg: grunt.file.readJSON('package.json'),
|
|
concat : {
|
|
locales: {
|
|
src: 'locale/*.js',
|
|
dest: 'min/locales.js'
|
|
},
|
|
tests: {
|
|
src: [
|
|
'test/browser-prefix.js',
|
|
'test/moment/*.js',
|
|
'test/locale/*.js',
|
|
'test/browser-suffix.js'
|
|
],
|
|
dest: 'min/tests.js'
|
|
}
|
|
},
|
|
env : {
|
|
sauceLabs : (grunt.file.exists('.sauce-labs.creds') ?
|
|
grunt.file.readJSON('.sauce-labs.creds') : {})
|
|
},
|
|
karma : {
|
|
options: {
|
|
frameworks: ['nodeunit'],
|
|
files: [
|
|
'min/moment-with-locales.js',
|
|
'min/tests.js',
|
|
'test/browser.js'
|
|
],
|
|
sauceLabs: {
|
|
startConnect: true,
|
|
testName: 'MomentJS'
|
|
},
|
|
customLaunchers: {
|
|
slChromeWinXp: {
|
|
base: 'SauceLabs',
|
|
browserName: 'chrome',
|
|
platform: 'Windows XP'
|
|
},
|
|
slIe9Win7: {
|
|
base: 'SauceLabs',
|
|
browserName: 'internet explorer',
|
|
platform: 'Windows 7',
|
|
version: '9'
|
|
},
|
|
slIe8Win7: {
|
|
base: 'SauceLabs',
|
|
browserName: 'internet explorer',
|
|
platform: 'Windows 7',
|
|
version: '8'
|
|
},
|
|
slFfLinux: {
|
|
base: 'SauceLabs',
|
|
browserName: 'firefox',
|
|
platform: 'Linux'
|
|
},
|
|
slSafariOsx: {
|
|
base: 'SauceLabs',
|
|
browserName: 'safari',
|
|
platform: 'OS X 10.8'
|
|
}
|
|
}
|
|
},
|
|
server: {
|
|
browsers: []
|
|
},
|
|
chrome: {
|
|
singleRun: true,
|
|
browsers: ['Chrome']
|
|
},
|
|
firefox: {
|
|
singleRun: true,
|
|
browsers: ['Firefox']
|
|
},
|
|
sauce: {
|
|
options: {reporters: ['dots']},
|
|
singleRun: true,
|
|
browsers: [
|
|
'slChromeWinXp',
|
|
'slIe9Win7',
|
|
'slIe8Win7',
|
|
'slFfLinux',
|
|
'slSafariOsx'
|
|
]
|
|
}
|
|
},
|
|
|
|
uglify : {
|
|
target: {
|
|
files: {
|
|
'min/moment-with-locales.min.js' : 'min/moment-with-locales.js',
|
|
'min/moment-with-customlocales.min.js' : 'min/moment-with-customlocales.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: 'some'
|
|
}
|
|
},
|
|
nodeunit : {
|
|
all : ["test/moment/**/*.js", "test/locale/**/*.js"]
|
|
},
|
|
jshint: {
|
|
all: [
|
|
"Gruntfile.js", "moment.js", "locale/**/*.js", "test/**/*.js",
|
|
"!test/browser*.js"
|
|
],
|
|
options: {
|
|
"node" : true,
|
|
"browser" : true,
|
|
"boss" : false,
|
|
"curly" : true,
|
|
"debug" : false,
|
|
"devel" : false,
|
|
"eqeqeq" : true,
|
|
"eqnull" : true,
|
|
"evil" : false,
|
|
"forin" : false,
|
|
"immed" : false,
|
|
"laxbreak" : false,
|
|
"newcap" : true,
|
|
"noarg" : true,
|
|
"noempty" : false,
|
|
"nonew" : false,
|
|
"onevar" : true,
|
|
"plusplus" : false,
|
|
"regexp" : false,
|
|
"undef" : true,
|
|
"sub" : true,
|
|
"strict" : false,
|
|
"white" : true,
|
|
"es3" : true,
|
|
"camelcase" : true,
|
|
"globals": {
|
|
"define": false
|
|
}
|
|
}
|
|
},
|
|
jscs: {
|
|
all: [
|
|
"Gruntfile.js", "moment.js", "locale/**/*.js",
|
|
"test/**/*.js", "!test/browser*.js"
|
|
],
|
|
options: {
|
|
config: ".jscs.json"
|
|
}
|
|
},
|
|
watch : {
|
|
test : {
|
|
files : [
|
|
'moment.js',
|
|
'locale/*.js',
|
|
'test/**/*.js'
|
|
],
|
|
tasks: ['nodeunit']
|
|
},
|
|
jshint : {
|
|
files : '<%= jshint.all %>',
|
|
tasks: ['jshint']
|
|
}
|
|
},
|
|
embedLocales: {
|
|
moment: 'moment.js',
|
|
dest: embedLocaleDest,
|
|
targetLocales: embedLocaleSrc
|
|
},
|
|
benchmark: {
|
|
all: {
|
|
src: ['benchmarks/*.js']
|
|
}
|
|
}
|
|
});
|
|
|
|
grunt.loadTasks("tasks");
|
|
|
|
// These plugins provide necessary tasks.
|
|
require('load-grunt-tasks')(grunt);
|
|
|
|
// Default task.
|
|
grunt.registerTask('default', ['jshint', 'jscs', 'nodeunit']);
|
|
|
|
// test tasks
|
|
grunt.registerTask('test', ['test:node', 'test:browser']);
|
|
grunt.registerTask('test:node', ['nodeunit']);
|
|
grunt.registerTask('test:server', ['concat', 'embedLocales', 'karma:server']);
|
|
grunt.registerTask('test:browser', ['concat', 'embedLocales', 'karma:chrome', 'karma:firefox']);
|
|
grunt.registerTask('test:sauce-browser', ['concat', 'embedLocales', 'env:sauceLabs', 'karma:sauce']);
|
|
grunt.registerTask('test:travis-sauce-browser', ['concat', 'embedLocales', 'karma:sauce']);
|
|
|
|
// travis build task
|
|
grunt.registerTask('build:travis', [
|
|
// code style
|
|
'jshint', 'jscs',
|
|
// node tests
|
|
'test:node'
|
|
]);
|
|
|
|
// Task to be run when releasing a new version
|
|
grunt.registerTask('release', [
|
|
'jshint', 'nodeunit', 'concat', 'embedLocales',
|
|
'component', 'package_json', 'uglify'
|
|
]);
|
|
};
|