Gruntfile.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. module.exports = function( grunt ) {
  2. grunt.initConfig({
  3. version: grunt.file.readJSON('package.json').version,
  4. jshint: {
  5. options: {
  6. reporter: require('jshint-stylish'),
  7. jshintrc: true
  8. },
  9. build: {
  10. src: ['Gruntfile.js', 'tasks/*.js']
  11. },
  12. src: {
  13. src: 'src/**/*.js'
  14. },
  15. test: {
  16. src: 'test/*/specs/*.js'
  17. }
  18. },
  19. connect: {
  20. test: {
  21. options: {
  22. base: '',
  23. port: 9999
  24. }
  25. }
  26. },
  27. watch: {
  28. options: {
  29. nospawn: true
  30. },
  31. dev: {
  32. files: ['src/**/*.js', './component.json'],
  33. tasks: ['dev', 'instrument']
  34. }
  35. },
  36. coveralls: {
  37. options: {
  38. coverage_dir: 'coverage/'
  39. }
  40. },
  41. karma: {
  42. options: {
  43. frameworks: ['mocha'],
  44. files: [
  45. 'test/vue.test.js',
  46. 'test/unit/utils/chai.js',
  47. 'test/unit/utils/prepare.js',
  48. 'test/unit/specs/*.js'
  49. ],
  50. singleRun: true
  51. },
  52. browsers: {
  53. options: {
  54. browsers: ['Chrome', 'Firefox', 'Safari'],
  55. reporters: ['progress']
  56. }
  57. },
  58. phantom: {
  59. options: {
  60. browsers: ['PhantomJS'],
  61. reporters: ['progress', 'coverage'],
  62. preprocessors: {
  63. 'test/vue.test.js': ['coverage']
  64. },
  65. coverageReporter: {
  66. reporters: [
  67. { type: 'lcov' },
  68. { type: 'text-summary' }
  69. ]
  70. }
  71. }
  72. }
  73. },
  74. 'saucelabs-mocha': {
  75. test: {
  76. options: {
  77. urls: ['http://127.0.0.1:9999/test/unit/runner.html'],
  78. build: process.env.TRAVIS_JOB_ID || Date.now(),
  79. testname: "unit tests",
  80. concurrency: 3,
  81. browsers: [
  82. {
  83. browserName: "chrome",
  84. version: "31",
  85. platform: "Windows 7"
  86. },
  87. {
  88. browserName: "firefox",
  89. version: "26",
  90. platform: "Windows 7"
  91. },
  92. {
  93. browserName: "internet explorer",
  94. platform: "Windows 7",
  95. version: "9"
  96. },
  97. {
  98. browserName: "internet explorer",
  99. platform: "Windows 8",
  100. version: "10"
  101. },
  102. {
  103. browserName: "internet explorer",
  104. platform: "Windows 8.1",
  105. version: "11"
  106. },
  107. {
  108. browserName: "safari",
  109. platform: "OS X 10.8",
  110. version: "6"
  111. },
  112. {
  113. browserName: "safari",
  114. platform: "OS X 10.9",
  115. version: "7"
  116. },
  117. {
  118. browserName: "iphone",
  119. platform: "OS X 10.8",
  120. version: "6.0"
  121. },
  122. {
  123. browserName: "iphone",
  124. platform: "OS X 10.9",
  125. version: "7"
  126. }
  127. ]
  128. }
  129. }
  130. }
  131. })
  132. grunt.loadNpmTasks('grunt-karma')
  133. grunt.loadNpmTasks('grunt-karma-coveralls')
  134. grunt.loadNpmTasks('grunt-saucelabs')
  135. grunt.loadNpmTasks('grunt-contrib-watch')
  136. grunt.loadNpmTasks('grunt-contrib-jshint')
  137. grunt.loadNpmTasks('grunt-contrib-connect')
  138. // load custom tasks
  139. grunt.file.recurse('tasks', function (path) {
  140. require('./' + path)(grunt)
  141. })
  142. grunt.registerTask( 'unit', [
  143. 'instrument',
  144. 'karma:browsers'
  145. ])
  146. grunt.registerTask( 'test', [
  147. 'unit',
  148. 'casper'
  149. ])
  150. grunt.registerTask( 'sauce', [
  151. 'connect',
  152. 'saucelabs-mocha'
  153. ])
  154. grunt.registerTask( 'travis', [
  155. 'build',
  156. 'instrument',
  157. 'karma:phantom',
  158. 'coveralls',
  159. 'casper',
  160. 'sauce'
  161. ])
  162. grunt.registerTask( 'default', [
  163. 'jshint',
  164. 'build',
  165. 'test'
  166. ])
  167. }