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