module.exports = function(grunt) { var fs = require('fs') , version = fs.readFileSync('Changelog', 'utf-8') .split('\n') .shift() .split(/\s+/) .pop(); grunt.initConfig({ version: { options: { release: version, pkg: 'package.json' }, js: { options: { prefix: "Version:\\s+" }, src: ['jquery.iviewer.js'] }, json: { src: ['package.json', 'iviewer.jquery.json', 'bower.json'] } }, uglify: { options: { report: "min", mangle: false, banner: 'set me later' }, js: { files: { 'jquery.iviewer.min.js': ['jquery.iviewer.js'] } } } }); grunt.loadNpmTasks('grunt-version'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.registerTask('banner', function() { var banner = fs.readFileSync('jquery.iviewer.js', 'utf-8') .match(RegExp("^/\\*[^]*?\\*/"))[0] + '\n\n' grunt.config('uglify.options.banner', banner) }); grunt.registerTask('changelog', function() { var date = new Date() , pad = function(len, symb) { if (symb.toString().length < len) { return '0' + symb; } else { return symb; } } , stamp = '(' + [ date.getFullYear(), date.getMonth() + 1, date.getDate() ].map(pad.bind(null, 2)) .join('/') + ')\n' , file = grunt.file.read('Changelog') .replace(/(.*?)\n/, "$1 " + stamp); grunt.file.write('Changelog', file) }) grunt.registerTask('release', ['version', 'banner', 'changelog', 'uglify']) };