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