Gruntfile.js 5.2 KB

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