Gruntfile.js 2.61 KB
Newer Older
Tristan Cavelier's avatar
Tristan Cavelier committed
1 2 3
/*jslint indent: 2, maxlen: 80 */
/*global module */

4 5 6 7 8 9 10
module.exports = function (grunt) {
  "use strict";

  // Project configuration.
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    jslint: {
Tristan Cavelier's avatar
Tristan Cavelier committed
11 12 13 14 15 16
      grunt: {
        src: ['Gruntfile.js'],
        options: {
          errorsOnly: true
        }
      },
17 18 19 20
      jio: {
        src: ['src/jio/**/*.js'],
        exclude: ['src/jio/intro.js', 'src/jio/outro.js'],
        options: {
Tristan Cavelier's avatar
Tristan Cavelier committed
21 22 23 24 25 26 27
          errorsOnly: true
        }
      },
      jio_storages: {
        src: ['src/jio.storage/**/*.js'],
        options: {
          errorsOnly: true
28 29 30 31 32
        }
      },
      tests: {
        src: ['test/**/*.js'],
        options: {
Tristan Cavelier's avatar
Tristan Cavelier committed
33 34 35 36 37 38 39 40 41 42 43 44 45
          errorsOnly: true
        }
      },
      queries: {
        src: ['src/queries/core/**/*.js'],
        exclude: [
          'src/queries/begin.js',
          'src/queries/end.js',
          'src/queries/parser-begin.js',
          'src/queries/parser-end.js'
        ],
        options: {
          errorsOnly: true
46 47 48 49 50
        }
      }
    },
    concat: {
      jio: {
51
        // duplicate files are ignored
52 53
        src: [
          'src/jio/intro.js',
54 55
          'src/jio/core/globals.js',
          'src/jio/core/util.js',
56 57
          'src/jio/core/**/*.js',
          'src/jio/features/**/*.js',
Tristan Cavelier's avatar
Tristan Cavelier committed
58 59 60 61 62 63 64 65 66 67
          'src/jio/outro.js'
        ],
        dest: 'jio.js'
      },
      queries: {
        src: [
          'src/queries/begin.js',
          'src/queries/parser-begin.js',
          'src/queries/build/parser.js',
          'src/queries/parser-end.js',
68 69
          'src/queries/core/globals.js',
          'src/queries/core/tools.js',
Tristan Cavelier's avatar
Tristan Cavelier committed
70 71
          'src/queries/core/**/*.js',
          'src/queries/end.js'
72
        ],
Tristan Cavelier's avatar
Tristan Cavelier committed
73
        dest: 'complex_queries.js'
74 75
      }
    },
Tristan Cavelier's avatar
Tristan Cavelier committed
76 77 78 79 80 81 82 83 84 85 86 87 88
    uglify: {
      options: {
        banner: '/*! <%= pkg.name %> <%= pkg.version %> ' +
          '<%= grunt.template.today("yyyy-mm-dd") %> */\n'
      },
      jio: {
        src: 'jio.js', // '<%= pkg.name %>.js'
        dest: 'jio.min.js'
      },
      queries: {
        src: 'complex_queries.js',
        dest: 'complex_queries.min.js'
      }
89
    },
Tristan Cavelier's avatar
Tristan Cavelier committed
90 91 92 93 94
    qunit: {
      // grunt doesn't like requirejs
      // phantomjs daesn't know Blobs !!
      files: ['test/tests.html']
    }
95 96 97 98 99 100 101 102 103 104 105 106 107
  });

  grunt.loadNpmTasks('grunt-jslint');
  grunt.loadNpmTasks('grunt-contrib-concat');
  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.loadNpmTasks('grunt-contrib-qunit');

  grunt.registerTask('default', ['jslint', 'concat', 'uglify']); //, 'qunit']);

  grunt.registerTask('lint', ['jslint']);
  grunt.registerTask('build', ['concat', 'uglify']);
  grunt.registerTask('test', ['jslint', 'qunit']);
};