' */'
},
- jshint: {
- files: [ 'Gruntfile.js', 'js/reveal.js' ]
- },
-
// Tests will be added soon
qunit: {
files: [ 'test/**/*.html' ]
}
},
+ sass: {
+ main: {
+ files: {
+ 'css/theme/default.css': 'css/theme/source/default.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'
+ }
+ }
+ },
+
jshint: {
options: {
curly: false,
undef: true,
eqnull: true,
browser: true,
- expr: true
+ expr: true,
+ globals: {
+ head: false,
+ module: false,
+ console: false
+ }
},
- globals: {
- head: false,
- module: false,
- console: false
+ files: [ 'Gruntfile.js', 'js/reveal.js' ]
+ },
+
+ connect: {
+ server: {
+ options: {
+ port: 8000,
+ base: '.'
+ }
}
},
+ zip: {
+ 'reveal-js-presentation.zip': [
+ 'index.html',
+ 'css/**',
+ 'js/**',
+ 'lib/**',
+ 'images/**',
+ 'plugin/**'
+ ]
+ },
+
watch: {
- files: [ 'Gruntfile.js', 'js/reveal.js', 'css/reveal.css' ],
- tasks: 'default'
+ main: {
+ files: [ 'Gruntfile.js', 'js/reveal.js', 'css/reveal.css' ],
+ tasks: 'default'
+ },
+ theme: {
+ files: [ 'css/theme/source/*.scss', 'css/theme/template/*.scss' ],
+ tasks: 'themes'
+ }
}
});
grunt.loadNpmTasks( 'grunt-contrib-cssmin' );
grunt.loadNpmTasks( 'grunt-contrib-uglify' );
grunt.loadNpmTasks( 'grunt-contrib-watch' );
+ grunt.loadNpmTasks( 'grunt-contrib-sass' );
+ grunt.loadNpmTasks( 'grunt-contrib-connect' );
+ grunt.loadNpmTasks( 'grunt-zip' );
// Default task
grunt.registerTask( 'default', [ 'jshint', 'cssmin', 'uglify' ] );
+ // Theme task
+ grunt.registerTask( 'themes', [ 'sass' ] );
+
+ // Package presentation to archive
+ grunt.registerTask( 'package', [ 'default', 'zip' ] );
+
+ // Serve presentation locally
+ grunt.registerTask( 'serve', [ 'connect', 'watch' ] );
+
};