gruntfile.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. var sauceConfig = require('./grunt/sauce')
  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. watch: {
  21. options: {
  22. nospawn: true
  23. },
  24. dev: {
  25. files: ['src/**/*.js'],
  26. tasks: ['dev']
  27. },
  28. test: {
  29. files: ['test/unit/specs/**/*.js'],
  30. tasks: ['build-test']
  31. }
  32. },
  33. karma: {
  34. options: {
  35. frameworks: ['jasmine', 'commonjs'],
  36. files: [
  37. 'test/unit/lib/jquery.js',
  38. 'src/**/*.js',
  39. 'test/unit/specs/**/*.js'
  40. ],
  41. preprocessors: {
  42. 'src/**/*.js': ['commonjs'],
  43. 'test/unit/specs/**/*.js': ['commonjs']
  44. },
  45. singleRun: true
  46. },
  47. browsers: {
  48. options: {
  49. browsers: ['Chrome', 'Firefox', 'Safari'],
  50. reporters: ['progress']
  51. }
  52. },
  53. coverage: {
  54. options: {
  55. browsers: ['PhantomJS'],
  56. reporters: ['progress', 'coverage'],
  57. preprocessors: {
  58. 'src/**/*.js': ['commonjs', 'coverage'],
  59. 'test/unit/specs/**/*.js': ['commonjs']
  60. },
  61. coverageReporter: {
  62. reporters: [
  63. { type: 'lcov' },
  64. { type: 'text-summary' }
  65. ]
  66. }
  67. }
  68. },
  69. sauce1: {
  70. options: sauceConfig.batch1
  71. },
  72. sauce2: {
  73. options: sauceConfig.batch2
  74. },
  75. sauce3: {
  76. options: sauceConfig.batch3
  77. }
  78. },
  79. coveralls: {
  80. options: {
  81. coverage_dir: 'coverage/',
  82. force: true
  83. }
  84. }
  85. })
  86. // load npm tasks
  87. grunt.loadNpmTasks('grunt-contrib-jshint')
  88. grunt.loadNpmTasks('grunt-contrib-watch')
  89. grunt.loadNpmTasks('grunt-karma')
  90. grunt.loadNpmTasks('grunt-karma-coveralls')
  91. // load custom tasks
  92. grunt.file.recurse('grunt/tasks', function (path) {
  93. require('./' + path)(grunt)
  94. })
  95. grunt.registerTask('unit', ['karma:browsers'])
  96. grunt.registerTask('cover', ['karma:coverage'])
  97. grunt.registerTask('test', ['unit', 'cover', 'casper'])
  98. grunt.registerTask('sauce', ['karma:sauce1', 'karma:sauce2', 'karma:sauce3'])
  99. grunt.registerTask('ci', ['jshint', 'cover', 'coveralls', 'build', 'casper', 'sauce'])
  100. grunt.registerTask('default', ['jshint', 'build', 'test'])
  101. }