gruntfile.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. var sauceConfig = require('./build/saucelabs.config.js')
  2. module.exports = function (grunt) {
  3. grunt.initConfig({
  4. version: grunt.file.readJSON('package.json').version,
  5. eslint: {
  6. src: {
  7. src: ['src/**/*.js']
  8. },
  9. test: {
  10. src: ['test/unit/specs/**/*.js', 'test/e2e/*.js']
  11. },
  12. build: {
  13. src: ['gruntfile.js', 'build/**/*.js']
  14. }
  15. },
  16. karma: {
  17. options: {
  18. frameworks: ['jasmine', 'commonjs'],
  19. files: [
  20. 'test/unit/lib/util.js',
  21. 'test/unit/lib/jquery.js',
  22. 'vendor/*.js',
  23. 'src/**/*.js',
  24. 'test/unit/specs/**/*.js'
  25. ],
  26. preprocessors: {
  27. 'vendor/*.js': ['commonjs'],
  28. 'src/**/*.js': ['commonjs'],
  29. 'test/unit/specs/**/*.js': ['commonjs']
  30. },
  31. singleRun: true
  32. },
  33. browsers: {
  34. options: {
  35. browsers: ['Chrome', 'Firefox', 'Safari'],
  36. reporters: ['progress']
  37. }
  38. },
  39. coverage: {
  40. options: {
  41. browsers: ['PhantomJS'],
  42. reporters: ['progress', 'coverage'],
  43. preprocessors: {
  44. 'vendor/*.js': ['commonjs'],
  45. 'src/**/*.js': ['commonjs', 'coverage'],
  46. 'test/unit/specs/**/*.js': ['commonjs']
  47. },
  48. coverageReporter: {
  49. reporters: [
  50. { type: 'lcov', subdir: '.' },
  51. { type: 'text-summary', subdir: '.' }
  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. })
  67. // load npm tasks
  68. grunt.loadNpmTasks('grunt-eslint')
  69. grunt.loadNpmTasks('grunt-karma')
  70. // load custom tasks
  71. require('./build/grunt-tasks/build')(grunt)
  72. require('./build/grunt-tasks/casper')(grunt)
  73. require('./build/grunt-tasks/codecov')(grunt)
  74. require('./build/grunt-tasks/release')(grunt)
  75. require('./build/grunt-tasks/open')(grunt)
  76. // register composite tasks
  77. grunt.registerTask('unit', ['karma:browsers'])
  78. grunt.registerTask('cover', ['karma:coverage'])
  79. grunt.registerTask('test', ['unit', 'cover', 'casper'])
  80. grunt.registerTask('sauce', ['karma:sauce1', 'karma:sauce2', 'karma:sauce3'])
  81. grunt.registerTask('default', ['eslint', 'build', 'test'])
  82. // CI
  83. if (process.env.CI_PULL_REQUEST) {
  84. grunt.registerTask('ci', ['eslint', 'cover', 'build', 'casper'])
  85. } else {
  86. grunt.registerTask('ci', ['eslint', 'cover', 'codecov', 'build', 'casper', 'sauce'])
  87. }
  88. }