Gruntfile.coffee 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. module.exports = (grunt) ->
  2. grunt.initConfig
  3. pkg: grunt.file.readJSON 'package.json'
  4. usebanner:
  5. taskName:
  6. options:
  7. position: 'top'
  8. banner: '
  9. /*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - <%= grunt.template.today("yyyy-mm-dd") %>\n
  10. * <%= pkg.homepage %>\n
  11. *\n
  12. * Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;\n
  13. * Licensed under the <%= pkg.license %> license */'
  14. linebreak: true
  15. files:
  16. src: ['./hammer.js','./hammer.min.js']
  17. concat:
  18. build:
  19. src: [
  20. 'src/hammer.prefix.js'
  21. 'src/utils.js'
  22. 'src/input.js'
  23. 'src/input/*.js'
  24. 'src/touchaction.js'
  25. 'src/recognizer.js'
  26. 'src/recognizers/*.js'
  27. 'src/hammer.js'
  28. 'src/manager.js'
  29. 'src/expose.js'
  30. 'src/hammer.suffix.js']
  31. dest: 'hammer.js'
  32. uglify:
  33. min:
  34. options:
  35. report: 'gzip'
  36. sourceMap: 'hammer.min.map'
  37. files:
  38. 'hammer.min.js': ['hammer.js']
  39. # special test build that exposes everything so it's testable
  40. test:
  41. options:
  42. wrap: "$H"
  43. comments: 'all'
  44. exportAll: true
  45. mangle: false
  46. beautify: true
  47. compress:
  48. global_defs:
  49. exportName: 'Hammer'
  50. files:
  51. 'tests/build.js': [
  52. 'src/utils.js'
  53. 'src/input.js'
  54. 'src/input/*.js'
  55. 'src/touchaction.js'
  56. 'src/recognizer.js'
  57. 'src/recognizers/*.js'
  58. 'src/hammer.js'
  59. 'src/manager.js'
  60. 'src/expose.js']
  61. 'string-replace':
  62. version:
  63. files:
  64. 'hammer.js': 'hammer.js'
  65. options:
  66. replacements: [
  67. pattern: '{{PKG_VERSION}}'
  68. replacement: '<%= pkg.version %>'
  69. ]
  70. jshint:
  71. options:
  72. jshintrc: true
  73. build:
  74. src: ['hammer.js']
  75. jscs:
  76. src: [
  77. 'src/**/*.js',
  78. '!src/hammer.prefix.js',
  79. '!src/hammer.suffix.js'
  80. ]
  81. options:
  82. config: "./.jscsrc"
  83. force: true
  84. watch:
  85. scripts:
  86. files: ['src/**/*.js']
  87. tasks: ['concat','string-replace','uglify','jshint','jscs']
  88. options:
  89. interrupt: true
  90. connect:
  91. server:
  92. options:
  93. hostname: "0.0.0.0"
  94. port: 8000
  95. qunit:
  96. all: ['tests/unit/index.html']
  97. # Load tasks
  98. grunt.loadNpmTasks 'grunt-contrib-concat'
  99. grunt.loadNpmTasks 'grunt-contrib-uglify'
  100. grunt.loadNpmTasks 'grunt-contrib-qunit'
  101. grunt.loadNpmTasks 'grunt-contrib-watch'
  102. grunt.loadNpmTasks 'grunt-contrib-jshint'
  103. grunt.loadNpmTasks 'grunt-contrib-connect'
  104. grunt.loadNpmTasks 'grunt-string-replace'
  105. grunt.loadNpmTasks 'grunt-banner'
  106. grunt.loadNpmTasks 'grunt-jscs'
  107. # Default task(s)
  108. grunt.registerTask 'default', ['connect', 'watch']
  109. grunt.registerTask 'default-test', ['connect', 'uglify:test', 'watch']
  110. grunt.registerTask 'build', ['concat', 'string-replace', 'uglify:min', 'usebanner', 'test']
  111. grunt.registerTask 'test', ['jshint', 'jscs', 'uglify:test', 'qunit']
  112. grunt.registerTask 'test-travis', ['build']