2019-04-01 13:46:08 +02:00
|
|
|
const sass = require('node-sass');
|
|
|
|
|
|
|
|
module.exports = grunt => {
|
2019-02-28 11:22:32 +01:00
|
|
|
|
|
|
|
require('load-grunt-tasks')(grunt);
|
|
|
|
|
|
|
|
let port = grunt.option('port') || 8000;
|
|
|
|
let root = grunt.option('root') || '.';
|
2016-10-05 11:45:37 +02:00
|
|
|
|
|
|
|
if (!Array.isArray(root)) root = [root];
|
2015-06-03 11:42:17 +02:00
|
|
|
|
2012-11-11 16:01:05 +01:00
|
|
|
// Project configuration
|
|
|
|
grunt.initConfig({
|
2013-02-27 08:26:24 +01:00
|
|
|
pkg: grunt.file.readJSON('package.json'),
|
2012-11-11 16:01:05 +01:00
|
|
|
meta: {
|
2013-02-27 19:20:24 +01:00
|
|
|
banner:
|
2012-11-11 16:01:05 +01:00
|
|
|
'/*!\n' +
|
2013-02-27 08:26:24 +01:00
|
|
|
' * reveal.js <%= pkg.version %> (<%= grunt.template.today("yyyy-mm-dd, HH:MM") %>)\n' +
|
2017-11-22 14:46:55 +01:00
|
|
|
' * http://revealjs.com\n' +
|
2012-11-11 16:01:05 +01:00
|
|
|
' * MIT licensed\n' +
|
|
|
|
' *\n' +
|
2019-01-10 14:58:38 +01:00
|
|
|
' * Copyright (C) 2019 Hakim El Hattab, http://hakim.se\n' +
|
2012-11-11 16:01:05 +01:00
|
|
|
' */'
|
|
|
|
},
|
|
|
|
|
|
|
|
qunit: {
|
2013-08-24 16:52:35 +02:00
|
|
|
files: [ 'test/*.html' ]
|
2012-11-11 16:01:05 +01:00
|
|
|
},
|
|
|
|
|
2013-02-27 08:26:24 +01:00
|
|
|
uglify: {
|
2013-02-27 19:20:24 +01:00
|
|
|
options: {
|
2017-04-30 11:51:20 +02:00
|
|
|
banner: '<%= meta.banner %>\n',
|
2018-01-22 15:34:15 +01:00
|
|
|
ie8: true
|
2013-02-27 19:20:24 +01:00
|
|
|
},
|
|
|
|
build: {
|
|
|
|
src: 'js/reveal.js',
|
|
|
|
dest: 'js/reveal.min.js'
|
|
|
|
}
|
2012-11-11 16:01:05 +01:00
|
|
|
},
|
|
|
|
|
2013-03-04 22:34:47 +01:00
|
|
|
sass: {
|
2019-02-28 10:07:41 +01:00
|
|
|
options: {
|
|
|
|
implementation: sass,
|
2019-02-28 11:22:32 +01:00
|
|
|
sourceMap: false
|
2019-02-28 10:07:41 +01:00
|
|
|
},
|
2014-10-06 09:51:12 +02:00
|
|
|
core: {
|
2017-04-30 11:51:20 +02:00
|
|
|
src: 'css/reveal.scss',
|
|
|
|
dest: 'css/reveal.css'
|
2014-10-06 09:51:12 +02:00
|
|
|
},
|
|
|
|
themes: {
|
2017-04-30 11:51:20 +02:00
|
|
|
expand: true,
|
|
|
|
cwd: 'css/theme/source',
|
|
|
|
src: ['*.sass', '*.scss'],
|
|
|
|
dest: 'css/theme',
|
|
|
|
ext: '.css'
|
2013-03-09 01:29:15 +01:00
|
|
|
}
|
2013-03-04 22:34:47 +01:00
|
|
|
},
|
|
|
|
|
2014-10-06 09:41:29 +02:00
|
|
|
autoprefixer: {
|
2017-04-30 11:51:20 +02:00
|
|
|
core: {
|
2014-10-06 09:41:29 +02:00
|
|
|
src: 'css/reveal.css'
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
cssmin: {
|
2017-04-30 11:51:20 +02:00
|
|
|
options: {
|
|
|
|
compatibility: 'ie9'
|
|
|
|
},
|
2014-10-06 09:41:29 +02:00
|
|
|
compress: {
|
2017-04-30 11:51:20 +02:00
|
|
|
src: 'css/reveal.css',
|
2017-05-16 09:44:36 +02:00
|
|
|
dest: 'css/reveal.min.css'
|
2014-10-06 09:41:29 +02:00
|
|
|
}
|
|
|
|
},
|
|
|
|
|
2012-11-11 16:01:05 +01:00
|
|
|
jshint: {
|
|
|
|
options: {
|
|
|
|
curly: false,
|
|
|
|
eqeqeq: true,
|
|
|
|
immed: true,
|
2016-10-05 11:45:37 +02:00
|
|
|
esnext: true,
|
2017-04-30 11:51:20 +02:00
|
|
|
latedef: 'nofunc',
|
2012-11-11 16:01:05 +01:00
|
|
|
newcap: true,
|
|
|
|
noarg: true,
|
|
|
|
sub: true,
|
|
|
|
undef: true,
|
|
|
|
eqnull: true,
|
|
|
|
browser: true,
|
2013-03-09 01:29:15 +01:00
|
|
|
expr: true,
|
2018-06-11 12:35:11 +02:00
|
|
|
loopfunc: true,
|
2013-03-09 01:29:15 +01:00
|
|
|
globals: {
|
|
|
|
head: false,
|
|
|
|
module: false,
|
2013-11-27 19:16:03 +01:00
|
|
|
console: false,
|
2014-04-09 02:08:21 +02:00
|
|
|
unescape: false,
|
|
|
|
define: false,
|
2019-04-01 13:46:08 +02:00
|
|
|
exports: false,
|
|
|
|
require: false
|
2013-03-09 01:29:15 +01:00
|
|
|
}
|
2012-11-11 16:01:05 +01:00
|
|
|
},
|
2019-04-01 13:46:08 +02:00
|
|
|
files: [ 'gruntfile.js', 'js/reveal.js' ]
|
2012-11-11 16:01:05 +01:00
|
|
|
},
|
|
|
|
|
2013-05-04 16:51:27 +02:00
|
|
|
connect: {
|
|
|
|
server: {
|
|
|
|
options: {
|
2013-09-12 00:20:09 +02:00
|
|
|
port: port,
|
2016-10-05 11:45:37 +02:00
|
|
|
base: root,
|
2015-02-25 15:35:30 +01:00
|
|
|
livereload: true,
|
2017-05-03 02:54:29 +02:00
|
|
|
open: true,
|
|
|
|
useAvailablePort: true
|
2013-05-04 16:51:27 +02:00
|
|
|
}
|
2017-04-30 11:51:20 +02:00
|
|
|
}
|
2013-05-04 16:51:27 +02:00
|
|
|
},
|
|
|
|
|
|
|
|
zip: {
|
2017-04-30 11:51:20 +02:00
|
|
|
bundle: {
|
|
|
|
src: [
|
|
|
|
'index.html',
|
|
|
|
'css/**',
|
|
|
|
'js/**',
|
|
|
|
'lib/**',
|
|
|
|
'images/**',
|
|
|
|
'plugin/**',
|
|
|
|
'**.md'
|
|
|
|
],
|
|
|
|
dest: 'reveal-js-presentation.zip'
|
|
|
|
}
|
2013-05-04 16:51:27 +02:00
|
|
|
},
|
|
|
|
|
2012-11-11 16:01:05 +01:00
|
|
|
watch: {
|
2014-10-06 09:51:12 +02:00
|
|
|
js: {
|
2019-04-01 13:46:08 +02:00
|
|
|
files: [ 'gruntfile.js', 'js/reveal.js' ],
|
2014-10-06 09:51:12 +02:00
|
|
|
tasks: 'js'
|
2013-03-04 22:34:47 +01:00
|
|
|
},
|
|
|
|
theme: {
|
2016-10-16 10:53:19 +02:00
|
|
|
files: [
|
|
|
|
'css/theme/source/*.sass',
|
|
|
|
'css/theme/source/*.scss',
|
|
|
|
'css/theme/template/*.sass',
|
|
|
|
'css/theme/template/*.scss'
|
|
|
|
],
|
2014-10-06 09:51:12 +02:00
|
|
|
tasks: 'css-themes'
|
2013-11-21 21:02:51 +01:00
|
|
|
},
|
2014-09-05 17:41:56 +02:00
|
|
|
css: {
|
2014-10-06 09:51:12 +02:00
|
|
|
files: [ 'css/reveal.scss' ],
|
|
|
|
tasks: 'css-core'
|
2014-09-12 22:49:13 +02:00
|
|
|
},
|
2019-04-01 11:14:22 +02:00
|
|
|
test: {
|
|
|
|
files: [ 'test/*.html' ],
|
|
|
|
tasks: 'test'
|
|
|
|
},
|
2015-02-25 15:35:30 +01:00
|
|
|
html: {
|
2016-10-05 11:45:37 +02:00
|
|
|
files: root.map(path => path + '/*.html')
|
2015-10-14 06:59:42 +02:00
|
|
|
},
|
2015-10-26 14:42:12 +01:00
|
|
|
markdown: {
|
2016-10-05 11:45:37 +02:00
|
|
|
files: root.map(path => path + '/*.md')
|
2016-01-08 13:58:35 +01:00
|
|
|
},
|
2015-07-02 07:51:01 +02:00
|
|
|
options: {
|
|
|
|
livereload: true
|
2015-10-26 14:42:12 +01:00
|
|
|
}
|
2012-11-11 16:01:05 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
});
|
2013-02-03 17:27:28 +01:00
|
|
|
|
2019-04-01 13:46:08 +02:00
|
|
|
grunt.loadNpmTasks('grunt-contrib-clean');
|
|
|
|
grunt.loadNpmTasks('grunt-contrib-nodeunit');
|
|
|
|
|
2012-11-11 16:01:05 +01:00
|
|
|
// Default task
|
2014-10-06 09:51:12 +02:00
|
|
|
grunt.registerTask( 'default', [ 'css', 'js' ] );
|
|
|
|
|
|
|
|
// JS task
|
|
|
|
grunt.registerTask( 'js', [ 'jshint', 'uglify', 'qunit' ] );
|
|
|
|
|
|
|
|
// Theme CSS
|
|
|
|
grunt.registerTask( 'css-themes', [ 'sass:themes' ] );
|
2012-11-11 16:01:05 +01:00
|
|
|
|
2014-10-06 09:51:12 +02:00
|
|
|
// Core framework CSS
|
|
|
|
grunt.registerTask( 'css-core', [ 'sass:core', 'autoprefixer', 'cssmin' ] );
|
2013-03-04 22:34:47 +01:00
|
|
|
|
2014-10-06 09:51:12 +02:00
|
|
|
// All CSS
|
2014-10-06 09:41:29 +02:00
|
|
|
grunt.registerTask( 'css', [ 'sass', 'autoprefixer', 'cssmin' ] );
|
2014-09-05 17:41:56 +02:00
|
|
|
|
2013-05-04 16:51:27 +02:00
|
|
|
// Package presentation to archive
|
|
|
|
grunt.registerTask( 'package', [ 'default', 'zip' ] );
|
|
|
|
|
|
|
|
// Serve presentation locally
|
|
|
|
grunt.registerTask( 'serve', [ 'connect', 'watch' ] );
|
|
|
|
|
2013-08-24 16:52:35 +02:00
|
|
|
// Run tests
|
|
|
|
grunt.registerTask( 'test', [ 'jshint', 'qunit' ] );
|
|
|
|
|
2012-11-11 16:01:05 +01:00
|
|
|
};
|