Gruntfile.js 4.8 KB

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