|
|
/** * 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' ]);
};
|