module.exports = function(grunt) {

  // Project configuration
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    concat: {
      dist: {
        src: ['src/polyfill/**/*.js', 'src/core.js'],
        dest: '<%= pkg.name %>.js'
      }
    },
    jshint: {
      options: {
        curly: true,
        eqeqeq: true,
        eqnull: true,
        browser: true,
        globals: {
          StorageMessenger: false,
          require: false,
          beforeEach: false,
          afterEach: false
        },
        ignores: ['test/integration/selenium-webdriver-extract/**/*.js']
      },
      beforeconcat: ['Gruntfile.js', 'src/**/*.js', 'test/**/*.js'],
      afterconcat: ['<%= pkg.name %>.js']
    },
    uglify: {
//      options: {
//        banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
//      },
      build: {
        src: '<%= pkg.name %>.js',
        dest: '<%= pkg.name %>.min.js'
      }
    }
  });

  // Load the task plugins
  grunt.loadNpmTasks('grunt-contrib-jshint');
  grunt.loadNpmTasks('grunt-contrib-concat');
  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.loadNpmTasks('grunt-contrib-jasmine');

  // Default tasks.
  grunt.registerTask('default', ['concat', 'jshint', 'uglify']);
};

@@ -378,155 +378,8 @@
 ue,%0A
-        globals: %7B%0A          StorageMessenger: false,%0A          require: false,%0A          beforeEach: false,%0A          afterEach: false%0A        %7D,%0A
     
@@ -592,37 +592,31 @@
 : %7B%0A
-//
       
-options
+build
 : %7B%0A
-//
         
 bann
@@ -615,21 +615,14 @@
     
-banner: '/*! 
+src: '
 %3C%25= 
@@ -636,156 +636,568 @@
 e %25%3E
- %3C%25= grunt.template.today(%22yyyy-mm-dd%22) %25%3E */%5Cn'%0A//      %7D,%0A      build: %7B%0A        src: '%3C%25= pkg.name %25%3E.js',%0A        dest: '%3C%25= pkg.name %25%3E.min.js'
+.js',%0A        dest: '%3C%25= pkg.name %25%3E.min.js'%0A      %7D%0A    %7D,%0A    replace: %7B%0A      version: %7B%0A        src: '%3C%25= pkg.name %25%3E.js',%0A        overwrite: true,%0A        replacements: %5B%7B%0A          from: '@VERSION@',%0A          to: '%3C%25= pkg.version %25%3E'%0A        %7D%5D%0A      %7D%0A    %7D,%0A    karma: %7B%0A      unit: %7B%0A        configFile: 'test/unit/config/karma.conf.js'%0A      %7D,%0A      //continuous integration mode: run tests once in PhantomJS browser.%0A      continuous: %7B%0A        configFile: 'test/unit/config/karma.conf.js',%0A        singleRun: true,%0A        browsers: %5B'PhantomJS'%5D
 %0A   
@@ -1411,23 +1411,57 @@
 unt-
-contrib-jasmine
+text-replace');%0A  grunt.loadNpmTasks('grunt-karma
 ');%0A
@@ -1523,16 +1523,27 @@
 concat',
+ 'replace',
  'jshint

Add Grunt tasks for text replacement of version placeholder and karma test runner.