github.com/mweagle/Sparta@v1.15.0/docs_source/static/presentations/reveal.js-3.9.2/gruntfile.js (about) 1 const sass = require('node-sass'); 2 3 module.exports = grunt => { 4 5 require('load-grunt-tasks')(grunt); 6 7 let port = grunt.option('port') || 8000; 8 let root = grunt.option('root') || '.'; 9 10 if (!Array.isArray(root)) root = [root]; 11 12 // Project configuration 13 grunt.initConfig({ 14 pkg: grunt.file.readJSON('package.json'), 15 meta: { 16 banner: 17 '/*!\n' + 18 ' * reveal.js <%= pkg.version %> (<%= grunt.template.today("yyyy-mm-dd, HH:MM") %>)\n' + 19 ' * http://revealjs.com\n' + 20 ' * MIT licensed\n' + 21 ' *\n' + 22 ' * Copyright (C) 2020 Hakim El Hattab, http://hakim.se\n' + 23 ' */' 24 }, 25 26 qunit: { 27 files: [ 'test/*.html' ] 28 }, 29 30 uglify: { 31 options: { 32 banner: '<%= meta.banner %>\n', 33 ie8: true 34 }, 35 build: { 36 src: 'js/reveal.js', 37 dest: 'js/reveal.min.js' 38 } 39 }, 40 41 sass: { 42 options: { 43 implementation: sass, 44 sourceMap: false 45 }, 46 core: { 47 src: 'css/reveal.scss', 48 dest: 'css/reveal.css' 49 }, 50 themes: { 51 expand: true, 52 cwd: 'css/theme/source', 53 src: ['*.sass', '*.scss'], 54 dest: 'css/theme', 55 ext: '.css' 56 } 57 }, 58 59 autoprefixer: { 60 core: { 61 src: 'css/reveal.css' 62 } 63 }, 64 65 cssmin: { 66 options: { 67 compatibility: 'ie9' 68 }, 69 compress: { 70 src: 'css/reveal.css', 71 dest: 'css/reveal.min.css' 72 } 73 }, 74 75 jshint: { 76 options: { 77 curly: false, 78 eqeqeq: true, 79 immed: true, 80 esnext: true, 81 latedef: 'nofunc', 82 newcap: true, 83 noarg: true, 84 sub: true, 85 undef: true, 86 eqnull: true, 87 browser: true, 88 expr: true, 89 loopfunc: true, 90 globals: { 91 head: false, 92 module: false, 93 console: false, 94 unescape: false, 95 define: false, 96 exports: false, 97 require: false 98 } 99 }, 100 files: [ 'gruntfile.js', 'js/reveal.js' ] 101 }, 102 103 connect: { 104 server: { 105 options: { 106 port: port, 107 base: root, 108 livereload: true, 109 open: true, 110 useAvailablePort: true 111 } 112 } 113 }, 114 115 zip: { 116 bundle: { 117 src: [ 118 'index.html', 119 'css/**', 120 'js/**', 121 'lib/**', 122 'images/**', 123 'plugin/**', 124 '**.md' 125 ], 126 dest: 'reveal-js-presentation.zip' 127 } 128 }, 129 130 watch: { 131 js: { 132 files: [ 'gruntfile.js', 'js/reveal.js' ], 133 tasks: 'js' 134 }, 135 theme: { 136 files: [ 137 'css/theme/source/*.sass', 138 'css/theme/source/*.scss', 139 'css/theme/template/*.sass', 140 'css/theme/template/*.scss' 141 ], 142 tasks: 'css-themes' 143 }, 144 css: { 145 files: [ 'css/reveal.scss' ], 146 tasks: 'css-core' 147 }, 148 test: { 149 files: [ 'test/*.html' ], 150 tasks: 'test' 151 }, 152 html: { 153 files: root.map(path => path + '/*.html') 154 }, 155 markdown: { 156 files: root.map(path => path + '/*.md') 157 }, 158 options: { 159 livereload: true 160 } 161 } 162 163 }); 164 165 // Default task 166 grunt.registerTask( 'default', [ 'css', 'js' ] ); 167 168 // JS task 169 grunt.registerTask( 'js', [ 'jshint', 'uglify', 'qunit' ] ); 170 171 // Theme CSS 172 grunt.registerTask( 'css-themes', [ 'sass:themes' ] ); 173 174 // Core framework CSS 175 grunt.registerTask( 'css-core', [ 'sass:core', 'autoprefixer', 'cssmin' ] ); 176 177 // All CSS 178 grunt.registerTask( 'css', [ 'sass', 'autoprefixer', 'cssmin' ] ); 179 180 // Package presentation to archive 181 grunt.registerTask( 'package', [ 'default', 'zip' ] ); 182 183 // Serve presentation locally 184 grunt.registerTask( 'serve', [ 'connect', 'watch' ] ); 185 186 // Run tests 187 grunt.registerTask( 'test', [ 'jshint', 'qunit' ] ); 188 189 };