Gruntfile.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  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. }
  43. },
  44. // Uglify
  45. /*uglify: {
  46. options: {
  47. compress: {
  48. drop_console: true
  49. }
  50. },
  51. my_target: {
  52. files: {
  53. 'build/osmd.js': ['src/input.js']
  54. }
  55. }
  56. },*/
  57. // Settings for tests
  58. karma: {
  59. // For continuous integration
  60. ci: {
  61. configFile: 'karma.conf.js',
  62. options: {
  63. browsers: ['PhantomJS'],
  64. files: [
  65. '<%= browserify.debug.dest %>'
  66. ]
  67. }
  68. },
  69. debugWithFirefox: {
  70. configFile: 'karma.conf.js',
  71. options: {
  72. singleRun: false,
  73. browsers: ['Firefox'],
  74. files: [
  75. '<%= browserify.debug.dest %>', {
  76. pattern: 'src/**/*.ts',
  77. included: false
  78. }, {
  79. pattern: 'test/**/*.ts',
  80. included: false
  81. }
  82. ]
  83. }
  84. },
  85. debugWithChrome: {
  86. configFile: 'karma.conf.js',
  87. options: {
  88. singleRun: false,
  89. browsers: ['Chrome'],
  90. files: [
  91. '<%= browserify.debug.dest %>', {
  92. pattern: 'src/**/*.ts',
  93. included: false
  94. }, {
  95. pattern: 'test/**/*.ts',
  96. included: false
  97. }
  98. ]
  99. }
  100. }
  101. },
  102. // TSLint setup
  103. tslint: {
  104. options: {
  105. configuration: 'tslint.json'
  106. },
  107. all: {
  108. src: ['<%= browserify.dist.src %>', '<%= browserify.debug.src %>']
  109. }
  110. },
  111. // TypeScript type definitions
  112. typings: {
  113. install: {}
  114. },
  115. docco: {
  116. src: ['src/**/*.ts'],
  117. options: {
  118. layout: 'linear',
  119. output: 'build/docs'
  120. }
  121. },
  122. // Settings for clean task
  123. clean: {
  124. options: {
  125. force: true
  126. },
  127. all: {
  128. src: [
  129. '<%= outputDir.build %>',
  130. '<%= outputDir.dist %>',
  131. '.tscache'
  132. ]
  133. }
  134. }
  135. });
  136. // Load Npm tasks
  137. grunt.loadNpmTasks('grunt-browserify');
  138. grunt.loadNpmTasks('grunt-contrib-clean');
  139. grunt.loadNpmTasks('grunt-contrib-watch');
  140. //grunt.loadNpmTasks('grunt-jscs');
  141. grunt.loadNpmTasks('grunt-karma');
  142. grunt.loadNpmTasks('grunt-tslint');
  143. grunt.loadNpmTasks('grunt-typings');
  144. // Register tasks
  145. grunt.registerTask('default', [ /*'tslint',*/ 'browserify', 'karma:ci']);
  146. //grunt.registerTask('lint', ['tslint', 'jscs']);
  147. grunt.registerTask('test', ['browserify:debug', 'karma:ci']);
  148. //grunt.registerTask('test debug Firefox', ['browserify:debug', 'karma:debugWithFirefox']);
  149. //grunt.registerTask('test debug Chrome', ['browserify:debug', 'karma:debugWithChrome']);
  150. grunt.registerTask('rebuild', ['clean', 'default']);
  151. grunt.registerTask('publish', ['clean', 'browserify:dist']);
  152. grunt.registerTask('all', ['typings', 'default']);
  153. };