gruntfile.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. module.exports = function (grunt) {
  2. var version = grunt.file.readJSON('package.json').version
  3. var banner =
  4. '/**\n' +
  5. ' * Vue.js v' + version + '\n' +
  6. ' * (c) ' + new Date().getFullYear() + ' Evan You\n' +
  7. ' * Released under the MIT License.\n' +
  8. ' */\n'
  9. grunt.initConfig({
  10. jshint: {
  11. options: {
  12. reporter: require('jshint-stylish'),
  13. jshintrc: true
  14. },
  15. build: {
  16. src: ['gruntfile.js', 'tasks/*.js']
  17. },
  18. src: {
  19. src: 'src/**/*.js'
  20. },
  21. test: {
  22. src: 'test/**/*.js'
  23. }
  24. },
  25. karma: {
  26. options: {
  27. frameworks: ['jasmine', 'commonjs'],
  28. files: [
  29. 'src/**/*.js',
  30. 'test/unit/**/*.js'
  31. ],
  32. preprocessors: {
  33. 'src/**/*.js': ['commonjs'],
  34. 'test/unit/**/*.js': ['commonjs']
  35. },
  36. singleRun: true
  37. },
  38. browsers: {
  39. options: {
  40. browsers: ['Chrome', 'Firefox'],
  41. reporters: ['progress']
  42. }
  43. },
  44. phantom: {
  45. options: {
  46. browsers: ['PhantomJS'],
  47. reporters: ['progress']
  48. }
  49. }
  50. },
  51. browserify: {
  52. build: {
  53. src: ['src/vue.js'],
  54. dest: 'dist/vue.js',
  55. options: {
  56. bundleOptions: {
  57. standalone: 'Vue'
  58. },
  59. postBundleCB: function (err, src, next) {
  60. next(err, banner + src)
  61. }
  62. }
  63. },
  64. watch: {
  65. src: ['src/vue.js'],
  66. dest: 'dist/vue.js',
  67. options: {
  68. watch: true,
  69. keepAlive: true,
  70. bundleOptions: {
  71. standalone: 'Vue'
  72. }
  73. }
  74. },
  75. bench: {
  76. src: ['benchmarks/bench.js'],
  77. dest: 'benchmarks/browser.js'
  78. }
  79. },
  80. uglify: {
  81. build: {
  82. options: {
  83. banner: banner,
  84. compress: {
  85. pure_funcs: [
  86. '_.log',
  87. '_.warn',
  88. 'enableDebug'
  89. ]
  90. }
  91. },
  92. files: {
  93. 'dist/vue.min.js': ['dist/vue.js']
  94. }
  95. }
  96. }
  97. })
  98. // load npm tasks
  99. grunt.loadNpmTasks('grunt-contrib-jshint')
  100. grunt.loadNpmTasks('grunt-contrib-uglify')
  101. grunt.loadNpmTasks('grunt-karma')
  102. grunt.loadNpmTasks('grunt-browserify')
  103. // load custom tasks
  104. grunt.file.recurse('tasks', function (path) {
  105. require('./' + path)(grunt)
  106. })
  107. grunt.registerTask('unit', ['karma:browsers'])
  108. grunt.registerTask('phantom', ['karma:phantom'])
  109. grunt.registerTask('bench', ['browserify:bench'])
  110. grunt.registerTask('watch', ['browserify:watch'])
  111. grunt.registerTask('build', ['browserify:build', 'uglify:build'])
  112. }