3 module.exports = function(grunt) {
5 grunt.loadNpmTasks('grunt-contrib-uglify');
6 require('load-grunt-tasks')(grunt);
8 var fs = require('fs');
9 var usePhantom = process.env.TRAVIS_PULL_REQUEST != 'false' || process.env.BROWSER == 'phantomjs';
10 var distTasks = JSON.parse(fs.readFileSync('Tests/dist-tasks.json'));
11 var options = require('./Tests/gruntfile-options');
14 'connect': options.grunt,
16 options: {name: 'Core'},
17 'all':options.packager.all,
18 'nocompat':options.packager.nocompat,
19 'specs':options.packager.specs,
20 'specs-nocompat':options.packager.specsNoCompat,
21 'dist-all': distTasks.build.compat,
22 'dist-nocompat': distTasks.build.nocompat,
23 'dist-server': distTasks.build.server
25 uglify: distTasks.uglify,
27 options: options.karma,
29 browsers: ['PhantomJS']
32 browsers: [options.travis.browser]
36 browsers: ['PhantomJS'],
39 // Testers for dist build files
40 compatFull: distTasks.testTasks.compatFull,
41 compatUglyfied: distTasks.testTasks.compatUglyfied,
42 nocompatFull: distTasks.testTasks.nocompatFull,
43 nocompatUglified: distTasks.testTasks.nocompatUglified
47 dist: {src: 'dist/mootools-*.js'},
48 specs: {src: 'mootools-*.js'}
52 var compatBuild = ['clean:specs', 'packager:all', 'packager:specs'];
53 var nocompatBuild = ['clean:specs', 'packager:nocompat', 'packager:specs-nocompat'];
54 var tasks = options.travis.build == 'default' ? compatBuild : nocompatBuild;
55 tasks = usePhantom ? tasks.concat('karma:continuous') : tasks.concat('karma:sauceTask');
57 grunt.registerTask('default', compatBuild.concat('karma:continuous')); // local testing - compat build
58 grunt.registerTask('nocompat', nocompatBuild.concat('karma:continuous')); // local testing - no compat build
59 grunt.registerTask('default:travis', tasks); // Travis & Sauce Labs
60 grunt.registerTask('distBuild', [ // task to build and test /dist files
62 'clean:dist', 'packager:dist-all', 'packager:dist-nocompat', 'packager:dist-server', 'uglify',
63 // Test specs against dist files
64 'clean:specs', 'packager:specs', 'karma:compatFull', 'karma:compatUglyfied',
65 'clean:specs', 'packager:specs-nocompat', 'karma:nocompatFull', 'karma:nocompatUglified'