module.exports = function(grunt) { 'use strict'; grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), banner: `/*! * Stickyfill – \`position: sticky\` polyfill * v. <%= pkg.version %> | <%= pkg.homepage %> * MIT License */ `, babel: { options: { presets: ['es2015'] }, dist: { files: { 'dist/stickyfill.js': 'src/stickyfill.js' } } }, wrap: { es5: { options: { wrapper: [ '<%= banner %>\n;(function(window, document) {', '})(window, document);' ], indent: ' ' }, files: { 'dist/stickyfill.js': ['dist/stickyfill.js'] } }, es6: { options: { wrapper: [ '<%= banner %>', '' ] }, files: { 'dist/stickyfill.es6.js': ['src/stickyfill.js'] } } }, uglify: { options: { banner: '<%= banner %>', mangle: true }, dist: { files: { 'dist/stickyfill.min.js': ['dist/stickyfill.js'] } } }, bump: { options: { files: ['package.json'], updateConfigs: ['pkg'], commit: true, commitMessage: 'v %VERSION%', commitFiles: ['.'], createTag: true, tagName: '%VERSION%', tagMessage: 'v %VERSION%', push: false } }, shell: { push: { command: 'git push' }, pushTags: { command: 'git push --tags' }, publishToNpm: { command: 'npm publish' } }, watch: { files: ['src/**/*.js'], tasks: ['build'] } }); grunt.loadNpmTasks('grunt-wrap'); grunt.loadNpmTasks('grunt-babel'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-bump'); grunt.loadNpmTasks('grunt-shell'); grunt.registerTask('build', ['babel', 'wrap', 'uglify']); grunt.registerTask('release', ['bump-only:patch', 'build', 'bump-commit', 'shell:push', 'shell:pushTags', 'shell:publishToNpm']); grunt.registerTask('default', ['build', 'watch']); };