Gruntfile.js 5.0 KB

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