Gruntfile.js 4.1 KB

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