Gruntfile.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. module.exports = function(grunt) {
  2. 'use strict';
  3. var L = grunt.log.writeln;
  4. var BANNER = '/**\n' +
  5. ' * Open Sheet Music Display library <%= pkg.version %> built on <%= grunt.template.today("yyyy-mm-dd") %>.\n' +
  6. ' * Copyright (c) 2016 PhonicScore\n' +
  7. ' *\n' +
  8. ' * https://github.com/opensheetmusicdisplay/opensheetmusicdisplay\n' +
  9. ' */\n';
  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: ['typings/browser.d.ts', 'src/**/*.ts'],
  21. dest: '<%= outputDir.build %>/osmd.js'
  22. },
  23. debug: {
  24. src: ['typings/browser.d.ts', 'src/**/*.ts', 'test/**/*.ts'],
  25. dest: '<%= outputDir.build %>/osmd-debug.js',
  26. options: {
  27. browserifyOptions: {
  28. debug: true
  29. }
  30. }
  31. },
  32. options: {
  33. plugin: ['tsify']
  34. }
  35. },
  36. // Uglify
  37. /*uglify: {
  38. options: {
  39. compress: {
  40. drop_console: true
  41. }
  42. },
  43. my_target: {
  44. files: {
  45. 'build/osmd.js': ['src/input.js']
  46. }
  47. }
  48. },*/
  49. // Settings for tests
  50. karma: {
  51. // For continuous integration
  52. ci: {
  53. configFile: 'karma.conf.js',
  54. options: {
  55. browsers: ['PhantomJS', 'Chrome', 'Firefox'],
  56. files: [
  57. '<%= browserify.debug.dest %>'
  58. ]
  59. }
  60. },
  61. debugWithFirefox: {
  62. configFile: 'karma.conf.js',
  63. options: {
  64. singleRun: false,
  65. browsers: ['Firefox'],
  66. files: [
  67. '<%= browserify.debug.dest %>',
  68. {pattern: 'src/**/*.ts', included: false},
  69. {pattern: 'test/**/*.ts', included: false}
  70. ]
  71. }
  72. },
  73. debugWithChrome: {
  74. configFile: 'karma.conf.js',
  75. options: {
  76. singleRun: false,
  77. browsers: ['Chrome'],
  78. files: [
  79. '<%= browserify.debug.dest %>',
  80. {pattern: 'src/**/*.ts', included: false},
  81. {pattern: 'test/**/*.ts', included: false}
  82. ]
  83. }
  84. }
  85. },
  86. // TSLint setup
  87. tslint: {
  88. options: {
  89. configuration: 'tslint.json'
  90. },
  91. all: {
  92. src: ['<%= browserify.dist.src %>', '<%= browserify.debug.src %>']
  93. }
  94. },
  95. // TypeScript type definitions
  96. typings: {
  97. install: {}
  98. },
  99. docco: {
  100. src: ['src/**/*.ts'],
  101. options: {
  102. layout: 'linear',
  103. output: 'build/docs'
  104. }
  105. },
  106. // Settings for clean task
  107. clean: {
  108. options: {
  109. force: true
  110. },
  111. all: {
  112. src: [
  113. '<%= outputDir.build %>',
  114. '<%= outputDir.dist %>',
  115. '.tscache'
  116. ]
  117. }
  118. },
  119. });
  120. grunt.loadNpmTasks('grunt-browserify');
  121. grunt.loadNpmTasks('grunt-contrib-clean');
  122. grunt.loadNpmTasks('grunt-contrib-watch');
  123. //grunt.loadNpmTasks('grunt-jscs');
  124. grunt.loadNpmTasks('grunt-karma');
  125. grunt.loadNpmTasks('grunt-tslint');
  126. grunt.loadNpmTasks('grunt-typings');
  127. grunt.registerTask('default', ['tslint', 'browserify', 'karma:ci']);
  128. //grunt.registerTask('lint', ['tslint', 'jscs']);
  129. grunt.registerTask('test', ['browserify:debug', 'karma:ci']);
  130. grunt.registerTask('test debug Firefox', ['browserify:debug', 'karma:debugWithFirefox']);
  131. grunt.registerTask('test debug Chrome', ['browserify:debug', 'karma:debugWithChrome']);
  132. grunt.registerTask('rebuild', ['clean', 'default']);
  133. grunt.registerTask('publish', ['clean', 'browserify:dist']);
  134. grunt.registerTask('all', ['typings', 'default']);
  135. };