gruntfile.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. var sauceConfig = require('./build/saucelabs-config')
  2. module.exports = function (grunt) {
  3. grunt.initConfig({
  4. version: grunt.file.readJSON('package.json').version,
  5. jshint: {
  6. options: {
  7. reporter: require('jshint-stylish'),
  8. jshintrc: true
  9. },
  10. build: {
  11. src: ['gruntfile.js', 'tasks/*.js']
  12. },
  13. src: {
  14. src: 'src/**/*.js'
  15. },
  16. test: {
  17. src: ['test/unit/specs/**/*.js', 'test/e2e/*.js']
  18. }
  19. },
  20. karma: {
  21. options: {
  22. frameworks: ['jasmine', 'commonjs'],
  23. files: [
  24. 'test/unit/lib/util.js',
  25. 'test/unit/lib/jquery.js',
  26. 'src/**/*.js',
  27. 'test/unit/specs/**/*.js'
  28. ],
  29. preprocessors: {
  30. 'src/**/*.js': ['commonjs'],
  31. 'test/unit/specs/**/*.js': ['commonjs']
  32. },
  33. singleRun: true
  34. },
  35. browsers: {
  36. options: {
  37. browsers: ['Chrome', 'Firefox', 'Safari'],
  38. reporters: ['progress']
  39. }
  40. },
  41. coverage: {
  42. options: {
  43. browsers: ['PhantomJS'],
  44. reporters: ['progress', 'coverage'],
  45. preprocessors: {
  46. 'src/**/*.js': ['commonjs', 'coverage'],
  47. 'test/unit/specs/**/*.js': ['commonjs']
  48. },
  49. coverageReporter: {
  50. reporters: [
  51. { type: 'lcov' },
  52. { type: 'text-summary' }
  53. ]
  54. }
  55. }
  56. },
  57. sauce1: {
  58. options: sauceConfig.batch1
  59. },
  60. sauce2: {
  61. options: sauceConfig.batch2
  62. },
  63. sauce3: {
  64. options: sauceConfig.batch3
  65. }
  66. },
  67. coveralls: {
  68. options: {
  69. coverage_dir: 'coverage/',
  70. force: true
  71. }
  72. }
  73. })
  74. // load npm tasks
  75. grunt.loadNpmTasks('grunt-contrib-jshint')
  76. grunt.loadNpmTasks('grunt-karma')
  77. grunt.loadNpmTasks('grunt-karma-coveralls')
  78. // load custom tasks
  79. require('./build/grunt-tasks/build')(grunt)
  80. require('./build/grunt-tasks/casper')(grunt)
  81. require('./build/grunt-tasks/release')(grunt)
  82. // register composite tasks
  83. grunt.registerTask('unit', ['karma:browsers'])
  84. grunt.registerTask('cover', ['karma:coverage'])
  85. grunt.registerTask('test', ['unit', 'cover', 'casper'])
  86. grunt.registerTask('sauce', ['karma:sauce1', 'karma:sauce2', 'karma:sauce3'])
  87. grunt.registerTask('ci', ['jshint', 'cover', 'coveralls', 'build', 'casper', 'sauce'])
  88. grunt.registerTask('default', ['jshint', 'build', 'test'])
  89. }