gruntfile.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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/jquery.js',
  25. 'src/**/*.js',
  26. 'test/unit/specs/**/*.js'
  27. ],
  28. preprocessors: {
  29. 'src/**/*.js': ['commonjs'],
  30. 'test/unit/specs/**/*.js': ['commonjs']
  31. },
  32. singleRun: true
  33. },
  34. browsers: {
  35. options: {
  36. browsers: ['Chrome', 'Firefox', 'Safari'],
  37. reporters: ['progress']
  38. }
  39. },
  40. coverage: {
  41. options: {
  42. browsers: ['PhantomJS'],
  43. reporters: ['progress', 'coverage'],
  44. preprocessors: {
  45. 'src/**/*.js': ['commonjs', 'coverage'],
  46. 'test/unit/specs/**/*.js': ['commonjs']
  47. },
  48. coverageReporter: {
  49. reporters: [
  50. { type: 'lcov' },
  51. { type: 'text-summary' }
  52. ]
  53. }
  54. }
  55. },
  56. sauce1: {
  57. options: sauceConfig.batch1
  58. },
  59. sauce2: {
  60. options: sauceConfig.batch2
  61. },
  62. sauce3: {
  63. options: sauceConfig.batch3
  64. }
  65. },
  66. coveralls: {
  67. options: {
  68. coverage_dir: 'coverage/',
  69. force: true
  70. }
  71. }
  72. })
  73. // load npm tasks
  74. grunt.loadNpmTasks('grunt-contrib-jshint')
  75. grunt.loadNpmTasks('grunt-karma')
  76. grunt.loadNpmTasks('grunt-karma-coveralls')
  77. // load custom tasks
  78. require('./build/grunt-tasks/build')(grunt)
  79. require('./build/grunt-tasks/casper')(grunt)
  80. require('./build/grunt-tasks/release')(grunt)
  81. // register composite tasks
  82. grunt.registerTask('unit', ['karma:browsers'])
  83. grunt.registerTask('cover', ['karma:coverage'])
  84. grunt.registerTask('test', ['unit', 'cover', 'casper'])
  85. grunt.registerTask('sauce', ['karma:sauce1', 'karma:sauce2', 'karma:sauce3'])
  86. grunt.registerTask('ci', ['jshint', 'cover', 'coveralls', 'build', 'casper', 'sauce'])
  87. grunt.registerTask('default', ['jshint', 'build', 'test'])
  88. }