Skip to content
Snippets Groups Projects
Gruntfile.js 3.52 KiB
Newer Older
/* 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) 2014 Hakim El Hattab, http://hakim.se\n' +
			options: {
				banner: '<%= meta.banner %>\n'
			},
			build: {
				src: 'js/reveal.js',
				dest: 'js/reveal.min.js'
			}
		sass: {
Miroslav Mocek's avatar
Miroslav Mocek committed
			dist: {
				files: {
					'css/reveal.css': 'css/reveal.scss',
					'css/theme/default.css': 'css/theme/source/default.scss',
Hakim El Hattab's avatar
Hakim El Hattab committed
					'css/theme/black.css': 'css/theme/source/black.scss',
					'css/theme/beige.css': 'css/theme/source/beige.scss',
					'css/theme/night.css': 'css/theme/source/night.scss',
					'css/theme/serif.css': 'css/theme/source/serif.scss',
					'css/theme/simple.css': 'css/theme/source/simple.scss',
					'css/theme/sky.css': 'css/theme/source/sky.scss',
					'css/theme/moon.css': 'css/theme/source/moon.scss',
					'css/theme/solarized.css': 'css/theme/source/solarized.scss',
					'css/theme/blood.css': 'css/theme/source/blood.scss'
		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: {
				}
			}
		},

		zip: {
			'reveal-js-presentation.zip': [
				'index.html',
				'css/**',
				'js/**',
				'lib/**',
				'images/**',
				'plugin/**'
			]
		},

			main: {
				files: [ 'Gruntfile.js', 'js/reveal.js', 'css/reveal.css' ],
				tasks: 'default'
			},
			theme: {
				files: [ 'css/theme/source/*.scss', 'css/theme/template/*.scss' ],
				tasks: 'themes'
				files: [ 'css/reveal.css' ],
Yves Delley's avatar
Yves Delley committed
			},
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' );
Yves Delley's avatar
-  
Yves Delley committed
	grunt.registerTask( 'default', [ 'jshint', 'css', 'uglify', 'qunit' ] );
	// Theme task
	grunt.registerTask( 'themes', [ 'sass' ] );

	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' ] );