gruntfile.js 2.6 KB

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