Gruntfile.js 4.9 KB

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