Gruntfile.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. module.exports = function (grunt) {
  2. 'use strict';
  3. // The banner on top of the build
  4. var banner = '/**\n' +
  5. ' * Open Sheet Music Display <%= pkg.version %> built on <%= grunt.template.today("yyyy-mm-dd") %>.\n' +
  6. ' * Copyright (c) 2016 PhonicScore\n' +
  7. ' *\n' +
  8. ' * https://github.com/opensheetmusicdisplay/opensheetmusicdisplay\n' +
  9. ' */\n';
  10. // Additional manual typings:
  11. var typings = [
  12. 'typings/browser.d.ts',
  13. 'typings/vexflow.d.ts',
  14. 'typings/fft.d.ts'
  15. ];
  16. // Grunt configuration following:
  17. grunt.initConfig({
  18. pkg: grunt.file.readJSON('package.json'),
  19. banner: banner,
  20. // Build output directories
  21. outputDir: {
  22. build: 'build',
  23. dist: 'dist'
  24. },
  25. // Browserify
  26. browserify: {
  27. dist: {
  28. src: typings.concat(['src/**/*.ts']),
  29. dest: '<%= outputDir.build %>/osmd.js',
  30. options: {
  31. banner: "<%= banner %>"
  32. }
  33. },
  34. debug: {
  35. src: typings.concat([
  36. 'src/Common/**/*.ts', 'test/Common/**/*.ts',
  37. 'src/Util/**/*.ts', 'test/Util/**/*.ts'
  38. // Should be: 'src/**/*.ts', 'test/**/*.ts'
  39. ]),
  40. dest: '<%= outputDir.build %>/osmd-debug.js',
  41. options: {
  42. banner: "<%= banner %>",
  43. browserifyOptions: {
  44. debug: true
  45. }
  46. }
  47. },
  48. options: {
  49. plugin: ['tsify'],
  50. browserifyOptions: {
  51. standalone: 'MeasureSizeCalculator'
  52. }
  53. }
  54. },
  55. // Uglify
  56. /*uglify: {
  57. options: {
  58. compress: {
  59. drop_console: true
  60. }
  61. },
  62. my_target: {
  63. files: {
  64. 'build/osmd.js': ['src/input.js']
  65. }
  66. }
  67. },*/
  68. // CI setup
  69. karma: {
  70. // For continuous integration
  71. ci: {
  72. configFile: 'karma.conf.js',
  73. options: {
  74. browsers: ['PhantomJS'],
  75. files: [
  76. '<%= browserify.debug.dest %>'
  77. ]
  78. }
  79. },
  80. debugWithFirefox: {
  81. configFile: 'karma.conf.js',
  82. options: {
  83. singleRun: false,
  84. browsers: ['Firefox'],
  85. files: [
  86. '<%= browserify.debug.dest %>', {
  87. pattern: 'src/**/*.ts',
  88. included: false
  89. }, {
  90. pattern: 'test/**/*.ts',
  91. included: false
  92. }
  93. ]
  94. }
  95. },
  96. debugWithChrome: {
  97. configFile: 'karma.conf.js',
  98. options: {
  99. singleRun: false,
  100. browsers: ['Chrome'],
  101. files: [
  102. '<%= browserify.debug.dest %>', {
  103. pattern: 'src/**/*.ts',
  104. included: false
  105. }, {
  106. pattern: 'test/**/*.ts',
  107. included: false
  108. }
  109. ]
  110. }
  111. }
  112. },
  113. // TSLint setup
  114. tslint: {
  115. options: {
  116. configuration: 'tslint.json'
  117. },
  118. all: {
  119. src: ['<%= browserify.dist.src %>', '<%= browserify.debug.src %>']
  120. }
  121. },
  122. // TypeScript Type Definitions
  123. typings: {
  124. install: {}
  125. },
  126. //
  127. docco: {
  128. src: ['src/**/*.ts'],
  129. options: {
  130. layout: 'linear',
  131. output: 'build/docs'
  132. }
  133. },
  134. // Cleaning task setup
  135. clean: {
  136. options: {
  137. force: true
  138. },
  139. all: {
  140. src: [
  141. '<%= outputDir.build %>',
  142. '<%= outputDir.dist %>',
  143. '.tscache',
  144. 'src/**/*.js', 'test/**/*.js'
  145. ]
  146. }
  147. }
  148. });
  149. // Load Npm tasks
  150. grunt.loadNpmTasks('grunt-browserify');
  151. grunt.loadNpmTasks('grunt-contrib-clean');
  152. grunt.loadNpmTasks('grunt-contrib-watch');
  153. // grunt.loadNpmTasks('grunt-jscs');
  154. grunt.loadNpmTasks('grunt-karma');
  155. grunt.loadNpmTasks('grunt-tslint');
  156. grunt.loadNpmTasks('grunt-typings');
  157. // Register tasks
  158. grunt.registerTask('all', ['typings', 'default']);
  159. grunt.registerTask('default', [ /*'tslint',*/ 'browserify', 'karma:ci']);
  160. // grunt.registerTask('lint', ['tslint', 'jscs']);
  161. grunt.registerTask('test', ['browserify:debug', 'karma:ci']);
  162. // grunt.registerTask('test debug Firefox', ['browserify:debug', 'karma:debugWithFirefox']);
  163. // grunt.registerTask('test debug Chrome', ['browserify:debug', 'karma:debugWithChrome']);
  164. grunt.registerTask('rebuild', ['clean', 'default']);
  165. grunt.registerTask('publish', ['clean', 'browserify:dist']);
  166. };