Skip to content
Snippets Groups Projects
Gruntfile.js 3.16 KiB
Newer Older
  • Learn to ignore specific revisions
  • /* global module:false */
    module.exports = function(grunt) {
    
    	var port = grunt.option('port') || 8000;
    
    	// Project configuration
    	grunt.initConfig({
    
    		pkg: grunt.file.readJSON('package.json'),
    
    				' * reveal.js <%= pkg.version %> (<%= grunt.template.today("yyyy-mm-dd, HH:MM") %>)\n' +
    
    				' * http://lab.hakim.se/reveal-js\n' +
    				' * MIT licensed\n' +
    				' *\n' +
    
    Hakim El Hattab's avatar
    Hakim El Hattab committed
    				' * Copyright (C) 2015 Hakim El Hattab, http://hakim.se\n' +
    
    			options: {
    				banner: '<%= meta.banner %>\n'
    			},
    			build: {
    				src: 'js/reveal.js',
    				dest: 'js/reveal.min.js'
    			}
    
    		sass: {
    
    			core: {
    
    				files: {
    
    					'css/reveal.css': 'css/reveal.scss',
    
    				}
    			},
    			themes: {
    
    				files: [
    					{
    						expand: true,
    						cwd: 'css/theme/source',
    						src: ['*.scss'],
    						dest: 'css/theme',
    						ext: '.css'
    					}
    				]
    
    		autoprefixer: {
    			dist: {
    				src: 'css/reveal.css'
    			}
    		},
    
    		cssmin: {
    			compress: {
    				files: {
    					'css/reveal.min.css': [ 'css/reveal.css' ]
    				}
    			}
    		},
    
    
    		jshint: {
    			options: {
    				curly: false,
    				eqeqeq: true,
    				immed: true,
    				latedef: true,
    				newcap: true,
    				noarg: true,
    				sub: true,
    				undef: true,
    				eqnull: true,
    				browser: true,
    
    Hakim El Hattab's avatar
    Hakim El Hattab committed
    				expr: true,
    				globals: {
    					head: false,
    					module: false,
    
    					console: false,
    
    					unescape: false,
    					define: false,
    					exports: false
    
    Hakim El Hattab's avatar
    Hakim El Hattab committed
    			files: [ 'Gruntfile.js', 'js/reveal.js' ]
    
    		connect: {
    			server: {
    				options: {
    
    Hakim El Hattab's avatar
    Hakim El Hattab committed
    					livereload: true,
    					open: true
    
    				}
    			}
    		},
    
    		zip: {
    			'reveal-js-presentation.zip': [
    				'index.html',
    				'css/**',
    				'js/**',
    				'lib/**',
    				'images/**',
    				'plugin/**'
    			]
    		},
    
    
    Hakim El Hattab's avatar
    Hakim El Hattab committed
    			options: {
    				livereload: true
    			},
    
    			js: {
    				files: [ 'Gruntfile.js', 'js/reveal.js' ],
    				tasks: 'js'
    
    			},
    			theme: {
    				files: [ 'css/theme/source/*.scss', 'css/theme/template/*.scss' ],
    
    				tasks: 'css-themes'
    
    				files: [ 'css/reveal.scss' ],
    				tasks: 'css-core'
    
    Yves Delley's avatar
    Yves Delley committed
    			},
    
    Hakim El Hattab's avatar
    Hakim El Hattab committed
    			html: {
    				files: [ 'index.html']
    			}
    
    Hakim El Hattab's avatar
    Hakim El Hattab committed
    
    
    	// Dependencies
    
    	grunt.loadNpmTasks( 'grunt-contrib-qunit' );
    
    	grunt.loadNpmTasks( 'grunt-contrib-jshint' );
    	grunt.loadNpmTasks( 'grunt-contrib-cssmin' );
    	grunt.loadNpmTasks( 'grunt-contrib-uglify' );
    	grunt.loadNpmTasks( 'grunt-contrib-watch' );
    
    Miroslav Mocek's avatar
    Miroslav Mocek committed
    	grunt.loadNpmTasks( 'grunt-sass' );
    
    	grunt.loadNpmTasks( 'grunt-contrib-connect' );
    
    	grunt.loadNpmTasks( 'grunt-autoprefixer' );
    
    	grunt.loadNpmTasks( 'grunt-zip' );
    
    	grunt.registerTask( 'default', [ 'css', 'js' ] );
    
    	// JS task
    	grunt.registerTask( 'js', [ 'jshint', 'uglify', 'qunit' ] );
    
    	// Theme CSS
    	grunt.registerTask( 'css-themes', [ 'sass:themes' ] );
    
    	// Core framework CSS
    	grunt.registerTask( 'css-core', [ 'sass:core', 'autoprefixer', 'cssmin' ] );
    
    	// All CSS
    
    	grunt.registerTask( 'css', [ 'sass', 'autoprefixer', 'cssmin' ] );
    
    	// Package presentation to archive
    	grunt.registerTask( 'package', [ 'default', 'zip' ] );
    
    	// Serve presentation locally
    	grunt.registerTask( 'serve', [ 'connect', 'watch' ] );
    
    
    	// Run tests
    	grunt.registerTask( 'test', [ 'jshint', 'qunit' ] );