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