gruntfile.js 2.7 KB

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