123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- module.exports = function (grunt) {
- var embedOption = grunt.option('embedLanguages'),
- embedLanguageDest = embedOption ?
- 'min/moment-with-customlangs.js' :
- 'min/moment-with-langs.js',
- embedLanguageLangs = 'lang/*.js';
- if (embedOption && embedOption.match(/,/)) {
- embedLanguageLangs = 'lang/{' + embedOption + '}.js';
- }
- else if (embedOption) {
- embedLanguageLangs = 'lang/' + embedOption + '.js';
- }
- grunt.initConfig({
- pkg: grunt.file.readJSON('package.json'),
- concat : {
- langs: {
- src: 'lang/*.js',
- dest: 'min/langs.js'
- },
- tests: {
- src: [
- 'test/browser-prefix.js',
- 'test/moment/*.js',
- 'test/lang/*.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-langs.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-langs.min.js' : 'min/moment-with-langs.js',
- 'min/moment-with-customlangs.min.js' : 'min/moment-with-customlangs.js',
- 'min/langs.min.js' : 'min/langs.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/lang/**/*.js"]
- },
- jshint: {
- all: [
- "Gruntfile.js", "moment.js", "lang/**/*.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
- }
- }
- },
- watch : {
- test : {
- files : [
- 'moment.js',
- 'lang/*.js',
- 'test/**/*.js'
- ],
- tasks: ['nodeunit']
- },
- jshint : {
- files : '<%= jshint.all %>',
- tasks: ['jshint']
- }
- },
- embedLanguages: {
- moment: 'moment.js',
- dest: embedLanguageDest,
- targetLangs: embedLanguageLangs
- }
- });
- grunt.loadTasks("tasks");
- // These plugins provide necessary tasks.
- require('load-grunt-tasks')(grunt);
- // Default task.
- grunt.registerTask('default', ['jshint', 'nodeunit']);
- //test tasks
- grunt.registerTask('test', ['test:node', 'test:browser']);
- grunt.registerTask('test:node', ['nodeunit']);
- grunt.registerTask('test:server', ['concat', 'embedLanguages', 'karma:server']);
- grunt.registerTask('test:browser', ['concat', 'embedLanguages', 'karma:chrome', 'karma:firefox']);
- grunt.registerTask('test:sauce-browser', ['concat', 'embedLanguages', 'env:sauceLabs', 'karma:sauce']);
- grunt.registerTask('test:travis-sauce-browser', ['concat', 'embedLanguages', 'karma:sauce']);
- // travis build task
- grunt.registerTask('build:travis', [
- 'jshint', 'test:node', 'check-sauce-creds',
- 'test:travis-sauce-browser'
- ]);
- // Task to be run when releasing a new version
- grunt.registerTask('release', [
- 'jshint', 'nodeunit', 'concat', 'embedLanguages',
- 'component', 'uglify'
- ]);
- };
|