321 lines
6.9 KiB
JavaScript
321 lines
6.9 KiB
JavaScript
|
/**
|
||
|
* Owl Carousel
|
||
|
*
|
||
|
* Bartosz Wojciechowski
|
||
|
*
|
||
|
* Copyright (c) 2014
|
||
|
* Licensed under the MIT license.
|
||
|
*/
|
||
|
module.exports = function(grunt) {
|
||
|
|
||
|
require('load-grunt-tasks')(grunt);
|
||
|
|
||
|
grunt
|
||
|
.initConfig({
|
||
|
pkg: grunt.file.readJSON('package.json'),
|
||
|
app: grunt.file.readJSON('_config.json'),
|
||
|
banner: '/**\n' + ' * Owl Carousel v<%= pkg.version %>\n'
|
||
|
+ ' * Copyright 2013-<%= grunt.template.today("yyyy") %> <%= pkg.author.name %>\n'
|
||
|
+ ' * Licensed under: <%= pkg.license %>\n' + ' */\n',
|
||
|
|
||
|
// assemble
|
||
|
assemble: {
|
||
|
options: {
|
||
|
flatten: false,
|
||
|
expand: true,
|
||
|
production: false,
|
||
|
assets: '<%= app.docs.dest %>/assets',
|
||
|
postprocess: require('pretty'),
|
||
|
|
||
|
// metadata
|
||
|
pkg: '<%= pkg %>',
|
||
|
app: '<%= app %>',
|
||
|
data: [ '<%= app.docs.src %>/data/*.{json,yml}' ],
|
||
|
|
||
|
// templates
|
||
|
partials: '<%= app.docs.templates %>/partials/*.hbs',
|
||
|
layoutdir: '<%= app.docs.layouts %>/',
|
||
|
|
||
|
// extensions
|
||
|
helpers: '<%= app.docs.src %>/helpers/*.js'
|
||
|
},
|
||
|
index: {
|
||
|
options: {
|
||
|
layout: 'home.hbs'
|
||
|
},
|
||
|
files: [ {
|
||
|
expand: true,
|
||
|
cwd: '<%= app.docs.pages %>/',
|
||
|
src: '*.hbs',
|
||
|
dest: '<%= app.docs.dest %>/'
|
||
|
} ]
|
||
|
},
|
||
|
demos: {
|
||
|
options: {
|
||
|
layout: 'demos.hbs'
|
||
|
},
|
||
|
files: [ {
|
||
|
expand: true,
|
||
|
cwd: '<%= app.docs.pages %>/demos/',
|
||
|
src: '*.hbs',
|
||
|
dest: '<%= app.docs.dest %>/demos'
|
||
|
} ]
|
||
|
},
|
||
|
docs: {
|
||
|
options: {
|
||
|
layout: 'docs.hbs'
|
||
|
},
|
||
|
files: [ {
|
||
|
expand: true,
|
||
|
cwd: '<%= app.docs.pages %>/docs/',
|
||
|
src: '*.hbs',
|
||
|
dest: '<%= app.docs.dest %>/docs'
|
||
|
} ]
|
||
|
}
|
||
|
},
|
||
|
|
||
|
// clean
|
||
|
clean: {
|
||
|
docs: [ '<%= app.docs.dest %>' ],
|
||
|
dist: [ 'dist' ]
|
||
|
},
|
||
|
|
||
|
// sass
|
||
|
sass: {
|
||
|
docs: {
|
||
|
options: {
|
||
|
outputStyle: 'compressed',
|
||
|
includePaths: [ '<%= app.docs.src %>/assets/scss/', 'node_modules/foundation-sites/scss' ]
|
||
|
},
|
||
|
files: {
|
||
|
'<%= app.docs.dest %>/assets/css/docs.theme.min.css': '<%= app.docs.src %>/assets/scss/docs.theme.scss'
|
||
|
}
|
||
|
},
|
||
|
dist: {
|
||
|
options: {
|
||
|
outputStyle: 'nested'
|
||
|
},
|
||
|
files: {
|
||
|
'dist/assets/<%= pkg.name %>.css': 'src/scss/<%= pkg.name %>.scss',
|
||
|
'dist/assets/owl.theme.default.css': 'src/scss/owl.theme.default.scss',
|
||
|
'dist/assets/owl.theme.green.css': 'src/scss/owl.theme.green.scss'
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
autoprefixer: {
|
||
|
options: {
|
||
|
browsers: [ 'last 2 versions', 'ie 7', 'ie 8', 'ie 9', 'ie 10', 'ie 11' ]
|
||
|
},
|
||
|
dist: {
|
||
|
files: {
|
||
|
'dist/assets/<%= pkg.name %>.css': 'dist/assets/<%= pkg.name %>.css',
|
||
|
'dist/assets/owl.theme.default.css': 'dist/assets/owl.theme.default.css',
|
||
|
'dist/assets/owl.theme.green.css': 'dist/assets/owl.theme.green.css'
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
concat: {
|
||
|
dist: {
|
||
|
files: {
|
||
|
'dist/<%= pkg.name %>.js': '<%= app.src.scripts %>'
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
cssmin: {
|
||
|
dist: {
|
||
|
files: {
|
||
|
'dist/assets/<%= pkg.name %>.min.css': 'dist/assets/<%= pkg.name %>.css',
|
||
|
'dist/assets/owl.theme.default.min.css': 'dist/assets/owl.theme.default.css',
|
||
|
'dist/assets/owl.theme.green.min.css': 'dist/assets/owl.theme.green.css'
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
jshint: {
|
||
|
options: {
|
||
|
jshintrc: 'src/js/.jshintrc'
|
||
|
},
|
||
|
dist: {
|
||
|
src: [ '<%= app.src.scripts %>', 'Gruntfile.js' ]
|
||
|
}
|
||
|
},
|
||
|
|
||
|
qunit: {
|
||
|
options: {
|
||
|
timeout: 10000
|
||
|
},
|
||
|
dist: [ 'test/index.html' ]
|
||
|
},
|
||
|
|
||
|
jscs: {
|
||
|
options: {
|
||
|
config: 'src/js/.jscsrc',
|
||
|
reporter: 'text.js',
|
||
|
reporterOutput: 'jscs.report.txt'
|
||
|
},
|
||
|
dist: {
|
||
|
src: [ '<%= app.src.scripts %>', 'Gruntfile.js' ]
|
||
|
}
|
||
|
},
|
||
|
|
||
|
usebanner: {
|
||
|
dist: {
|
||
|
options: {
|
||
|
banner: '<%= banner %>',
|
||
|
linebreak: false
|
||
|
},
|
||
|
files: {
|
||
|
src: [
|
||
|
'dist/<%= pkg.name %>.js',
|
||
|
'dist/assets/*.css'
|
||
|
]
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
uglify: {
|
||
|
options: {
|
||
|
banner: '<%= banner %>'
|
||
|
},
|
||
|
dist: {
|
||
|
files: {
|
||
|
'dist/<%= pkg.name %>.min.js': 'dist/<%= pkg.name %>.js'
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
// copy
|
||
|
copy: {
|
||
|
distImages: {
|
||
|
expand: true,
|
||
|
flatten: true,
|
||
|
cwd: 'src/',
|
||
|
src: [ 'img/*.*' ],
|
||
|
dest: 'dist/assets'
|
||
|
},
|
||
|
|
||
|
distToDocs: {
|
||
|
expand: true,
|
||
|
cwd: 'dist/',
|
||
|
src: [ '**/*.*' ],
|
||
|
dest: '<%= app.docs.dest %>/assets/owlcarousel'
|
||
|
},
|
||
|
|
||
|
srcToDocs: {
|
||
|
expand: true,
|
||
|
cwd: 'src/js',
|
||
|
src: [ '**/*.js' ],
|
||
|
dest: '<%= app.docs.dest %>/assets/owlcarousel/src'
|
||
|
},
|
||
|
|
||
|
docsAssets: {
|
||
|
expand: true,
|
||
|
cwd: '<%= app.docs.src %>/assets/',
|
||
|
src: [ 'css/*.css', 'vendors/*.js', 'vendors/*.map', 'img/*.*', 'js/*.*' ],
|
||
|
dest: '<%= app.docs.dest %>/assets/'
|
||
|
},
|
||
|
|
||
|
readme: {
|
||
|
files: [ {
|
||
|
'dist/LICENSE': 'LICENSE',
|
||
|
'dist/README.md': 'README.md'
|
||
|
} ]
|
||
|
}
|
||
|
},
|
||
|
|
||
|
// connect
|
||
|
connect: {
|
||
|
options: {
|
||
|
port: 9600,
|
||
|
open: true,
|
||
|
livereload: true,
|
||
|
hostname: 'localhost'
|
||
|
},
|
||
|
docs: {
|
||
|
options: {
|
||
|
base: "<%= app.docs.dest %>"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
// watch
|
||
|
watch: {
|
||
|
options: {
|
||
|
livereload: true
|
||
|
},
|
||
|
templatesDocs: {
|
||
|
files: [ '<%= app.docs.templates %>/**/*.hbs' ],
|
||
|
tasks: [ 'assemble' ]
|
||
|
},
|
||
|
sassDocs: {
|
||
|
files: [ '<%= app.docs.src %>/assets/**/*.scss' ],
|
||
|
tasks: [ 'sass:docs' ]
|
||
|
},
|
||
|
sass: {
|
||
|
files: [ 'src/**/*.scss' ],
|
||
|
tasks: [ 'sass:dist', 'cssmin:dist', 'usebanner:dist', 'copy:distToDocs' ]
|
||
|
},
|
||
|
jsDocs: {
|
||
|
files: [ '<%= app.docs.src %>/assets/**/*.js' ],
|
||
|
tasks: [ 'copy:docsAssets' ]
|
||
|
},
|
||
|
js: {
|
||
|
files: [ 'src/**/*.js' ],
|
||
|
tasks: [ 'jscs:dist', 'jshint:dist', 'qunit:dist', 'concat:dist', 'uglify:dist', 'usebanner:dist', 'copy:distToDocs', 'copy:srcToDocs' ]
|
||
|
},
|
||
|
helpersDocs: {
|
||
|
files: [ '<%= app.docs.src %>/helpers/*.js' ],
|
||
|
tasks: [ 'assemble' ]
|
||
|
},
|
||
|
test: {
|
||
|
files: [ 'test/*.html', 'test/unit/*.js' ],
|
||
|
tasks: [ 'qunit:dist' ]
|
||
|
}
|
||
|
},
|
||
|
|
||
|
// compress zip
|
||
|
compress: {
|
||
|
zip: {
|
||
|
options: {
|
||
|
archive: 'docs/download/owl.carousel.<%= pkg.version %>.zip'
|
||
|
},
|
||
|
files: [ {
|
||
|
expand: true,
|
||
|
cwd: 'dist/',
|
||
|
src: [ '**' ],
|
||
|
dest: 'owl.carousel.<%= pkg.version %>'
|
||
|
} ]
|
||
|
}
|
||
|
},
|
||
|
|
||
|
// publish to github pages
|
||
|
'gh-pages': {
|
||
|
options: {
|
||
|
base: 'docs'
|
||
|
},
|
||
|
src: '**/*'
|
||
|
}
|
||
|
});
|
||
|
|
||
|
grunt.loadNpmTasks('assemble');
|
||
|
|
||
|
// tasks
|
||
|
grunt.registerTask('dist', [ 'clean:dist', 'sass:dist', 'autoprefixer', 'concat:dist', 'cssmin:dist', 'copy:distImages', 'usebanner:dist', 'uglify:dist', 'copy:readme' ]);
|
||
|
|
||
|
grunt.registerTask('docs', [ 'dist', 'clean:docs', 'assemble', 'sass:docs', 'copy:docsAssets', 'copy:distToDocs', 'zip' ]);
|
||
|
|
||
|
grunt.registerTask('test', [ 'jshint:dist', 'qunit:dist', 'jscs:dist' ]);
|
||
|
|
||
|
grunt.registerTask('default', [ 'dist', 'docs', 'test' ]);
|
||
|
|
||
|
grunt.registerTask('serve', [ 'connect:docs', 'watch' ]);
|
||
|
|
||
|
grunt.registerTask('zip', [ 'compress' ]);
|
||
|
|
||
|
grunt.registerTask('deploy', [ 'docs', 'gh-pages' ]);
|
||
|
|
||
|
};
|