var jsFiles = [
  'src/utils.js'
, 'src/strokes.js'
, 'src/ghostwriter.js'
, 'src/exports.js'
];

module.exports = function(grunt) {
  grunt.initConfig({
    watch: {
      js: { files: 'src/**/*.js', tasks: 'uglify:ghostwriter' }
    },

    uglify: {
      options: { wrap: 'ghostwriter' }
    , ghostwriter: {
        options: { mangle: false, beautify: true, compress: false }
      , files: { 'ghostwriter.js': jsFiles }
      }
    , ghostwriter_min: {
        options: { mangle: true, compress: true }
      , files: { 'ghostwriter.min.js': jsFiles }
      }
    },

    jshint: {
      options: {
      // enforcing options
        bitwise: true
      , curly: true
      , newcap: true
      , noarg: true
      , noempty: true
      , nonew: true
      , quotmark: true
      , trailing: true
      , maxlen: 80

      // relaxing options
      , boss: true
      , es5: true
      , expr: true
      , laxcomma: true

      // environments
      , browser: true
      }
    , tests: ['test/*.js']
    , gruntfile: ['Gruntfile.js']
    , ghostwriter: ['src/**/*.js']
    }
  });

  grunt.loadNpmTasks('grunt-contrib-watch');
  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.loadNpmTasks('grunt-contrib-jshint');

  grunt.registerTask('lint', ['jshint']);
  grunt.registerTask('default', ['uglify']);
};

@@ -262,16 +262,24 @@
 tions: %7B
+%0A       
  wrap: '
@@ -286,24 +286,319 @@
 ghostwriter'
+%0A      , banner: %5B%0A          '// ghostwriter'%0A        , '// ==========='%0A        , '// * GitHub: https://github.com/jharding/ghostwriter'%0A        , '// * Copyright (c) %3C%25= grunt.template.today(%22yyyy%22) %25%3E Jake Harding'%0A        , '// * Licensed under the MIT license.%5Cn'%0A        %5D.join('%5Cn')%0A     
  %7D%0A    , gho

Add banner.