1
0
Fork 0
editiCollaborativo/static/reveal.js/Gruntfile.js

193 lines
3.4 KiB
JavaScript
Raw Normal View History

2019-06-13 12:31:37 +02:00
const sass = require('node-sass');
module.exports = grunt => {
require('load-grunt-tasks')(grunt);
let port = grunt.option('port') || 8000;
let root = grunt.option('root') || '.';
2017-03-02 01:09:54 +01:00
if (!Array.isArray(root)) root = [root];
// Project configuration
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
meta: {
banner:
'/*!\n' +
' * reveal.js <%= pkg.version %> (<%= grunt.template.today("yyyy-mm-dd, HH:MM") %>)\n' +
' * http://revealjs.com\n' +
2017-03-02 01:09:54 +01:00
' * MIT licensed\n' +
' *\n' +
2019-06-13 12:31:37 +02:00
' * Copyright (C) 2019 Hakim El Hattab, http://hakim.se\n' +
2017-03-02 01:09:54 +01:00
' */'
},
qunit: {
files: [ 'test/*.html' ]
},
uglify: {
options: {
banner: '<%= meta.banner %>\n',
2019-06-13 12:31:37 +02:00
ie8: true
2017-03-02 01:09:54 +01:00
},
build: {
src: 'js/reveal.js',
dest: 'js/reveal.min.js'
}
},
sass: {
2019-06-13 12:31:37 +02:00
options: {
implementation: sass,
sourceMap: false
},
2017-03-02 01:09:54 +01:00
core: {
src: 'css/reveal.scss',
dest: 'css/reveal.css'
2017-03-02 01:09:54 +01:00
},
themes: {
expand: true,
cwd: 'css/theme/source',
src: ['*.sass', '*.scss'],
dest: 'css/theme',
ext: '.css'
2017-03-02 01:09:54 +01:00
}
},
autoprefixer: {
core: {
2017-03-02 01:09:54 +01:00
src: 'css/reveal.css'
}
},
cssmin: {
options: {
compatibility: 'ie9'
},
2017-03-02 01:09:54 +01:00
compress: {
src: 'css/reveal.css',
dest: 'css/reveal.min.css'
2017-03-02 01:09:54 +01:00
}
},
jshint: {
options: {
curly: false,
eqeqeq: true,
immed: true,
esnext: true,
latedef: 'nofunc',
2017-03-02 01:09:54 +01:00
newcap: true,
noarg: true,
sub: true,
undef: true,
eqnull: true,
browser: true,
expr: true,
2019-06-13 12:31:37 +02:00
loopfunc: true,
2017-03-02 01:09:54 +01:00
globals: {
head: false,
module: false,
console: false,
unescape: false,
define: false,
2019-06-13 12:31:37 +02:00
exports: false,
require: false
2017-03-02 01:09:54 +01:00
}
},
2019-06-13 12:31:37 +02:00
files: [ 'gruntfile.js', 'js/reveal.js' ]
2017-03-02 01:09:54 +01:00
},
connect: {
server: {
options: {
port: port,
base: root,
livereload: true,
open: true,
useAvailablePort: true
2017-03-02 01:09:54 +01:00
}
}
2017-03-02 01:09:54 +01:00
},
zip: {
bundle: {
src: [
'index.html',
'css/**',
'js/**',
'lib/**',
'images/**',
'plugin/**',
'**.md'
],
dest: 'reveal-js-presentation.zip'
}
2017-03-02 01:09:54 +01:00
},
watch: {
js: {
2019-06-13 12:31:37 +02:00
files: [ 'gruntfile.js', 'js/reveal.js' ],
2017-03-02 01:09:54 +01:00
tasks: 'js'
},
theme: {
2017-11-20 23:45:27 +01:00
files: [
'css/theme/source/*.sass',
'css/theme/source/*.scss',
'css/theme/template/*.sass',
'css/theme/template/*.scss'
],
2017-03-02 01:09:54 +01:00
tasks: 'css-themes'
},
css: {
files: [ 'css/reveal.scss' ],
tasks: 'css-core'
},
2019-06-13 12:31:37 +02:00
test: {
files: [ 'test/*.html' ],
tasks: 'test'
},
2017-03-02 01:09:54 +01:00
html: {
files: root.map(path => path + '/*.html')
},
markdown: {
files: root.map(path => path + '/*.md')
},
options: {
livereload: true
}
}
});
2019-06-13 12:31:37 +02:00
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-nodeunit');
2017-03-02 01:09:54 +01:00
// Default task
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' ] );
};