gruntfile.js 2.4 KB

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