Gruntfile.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. /* global module:false */
  2. module.exports = function(grunt) {
  3. // Project configuration
  4. grunt.initConfig({
  5. pkg: grunt.file.readJSON('package.json'),
  6. meta: {
  7. banner:
  8. '/*!\n' +
  9. ' * reveal.js <%= pkg.version %> (<%= grunt.template.today("yyyy-mm-dd, HH:MM") %>)\n' +
  10. ' * http://lab.hakim.se/reveal-js\n' +
  11. ' * MIT licensed\n' +
  12. ' *\n' +
  13. ' * Copyright (C) 2013 Hakim El Hattab, http://hakim.se\n' +
  14. ' */'
  15. },
  16. // Tests will be added soon
  17. qunit: {
  18. files: [ 'test/*.html' ]
  19. },
  20. uglify: {
  21. options: {
  22. banner: '<%= meta.banner %>\n'
  23. },
  24. build: {
  25. src: 'js/reveal.js',
  26. dest: 'js/reveal.min.js'
  27. }
  28. },
  29. cssmin: {
  30. compress: {
  31. files: {
  32. 'css/reveal.min.css': [ 'css/reveal.css' ]
  33. }
  34. }
  35. },
  36. sass: {
  37. main: {
  38. files: {
  39. 'css/theme/default.css': 'css/theme/source/default.scss',
  40. 'css/theme/beige.css': 'css/theme/source/beige.scss',
  41. 'css/theme/night.css': 'css/theme/source/night.scss',
  42. 'css/theme/osi.css': 'css/theme/source/osi.scss',
  43. 'css/theme/serif.css': 'css/theme/source/serif.scss',
  44. 'css/theme/simple.css': 'css/theme/source/simple.scss',
  45. 'css/theme/sky.css': 'css/theme/source/sky.scss',
  46. 'css/theme/moon.css': 'css/theme/source/moon.scss',
  47. 'css/theme/solarized.css': 'css/theme/source/solarized.scss'
  48. }
  49. }
  50. },
  51. jshint: {
  52. options: {
  53. curly: false,
  54. eqeqeq: true,
  55. immed: true,
  56. latedef: true,
  57. newcap: true,
  58. noarg: true,
  59. sub: true,
  60. undef: true,
  61. eqnull: true,
  62. browser: true,
  63. expr: true,
  64. globals: {
  65. head: false,
  66. module: false,
  67. console: false
  68. }
  69. },
  70. files: [ 'Gruntfile.js', 'js/reveal.js' ]
  71. },
  72. connect: {
  73. server: {
  74. options: {
  75. port: 8000,
  76. base: '.'
  77. }
  78. }
  79. },
  80. zip: {
  81. 'reveal-js-presentation.zip': [
  82. 'index.html',
  83. 'css/**',
  84. 'js/**',
  85. 'lib/**',
  86. 'images/**',
  87. 'plugin/**'
  88. ]
  89. },
  90. watch: {
  91. main: {
  92. files: [ 'Gruntfile.js', 'js/reveal.js', 'css/reveal.css' ],
  93. tasks: 'default'
  94. },
  95. theme: {
  96. files: [ 'css/theme/source/*.scss', 'css/theme/template/*.scss' ],
  97. tasks: 'themes'
  98. }
  99. }
  100. });
  101. // Dependencies
  102. grunt.loadNpmTasks( 'grunt-contrib-qunit' );
  103. grunt.loadNpmTasks( 'grunt-contrib-jshint' );
  104. grunt.loadNpmTasks( 'grunt-contrib-cssmin' );
  105. grunt.loadNpmTasks( 'grunt-contrib-uglify' );
  106. grunt.loadNpmTasks( 'grunt-contrib-watch' );
  107. grunt.loadNpmTasks( 'grunt-contrib-sass' );
  108. grunt.loadNpmTasks( 'grunt-contrib-connect' );
  109. grunt.loadNpmTasks( 'grunt-zip' );
  110. // Default task
  111. grunt.registerTask( 'default', [ 'jshint', 'cssmin', 'uglify', 'qunit' ] );
  112. // Theme task
  113. grunt.registerTask( 'themes', [ 'sass' ] );
  114. // Package presentation to archive
  115. grunt.registerTask( 'package', [ 'default', 'zip' ] );
  116. // Serve presentation locally
  117. grunt.registerTask( 'serve', [ 'connect', 'watch' ] );
  118. // Run tests
  119. grunt.registerTask( 'test', [ 'jshint', 'qunit' ] );
  120. };