title: How to understand Grunt task options
body: <p>My goal is to run ES6 code on browser, and after reading a lot, I found this
  <a href="http://www.sitepoint.com/setting-up-es6-project-using-babel-browserify/" rel="nofollow">enter link description here</a></p>
  
  <p>and is able to run ES2015 code.
  But I am having a difficult time to create a Gruntfile.js, I don't understand what keywords are available and what they do. Take browserify for example, it could configurate like this</p>
  
  <pre><code>module.exports = function (grunt) {
     grunt.initConfig({
        browserify: {
           dist: {
              options: {
                 transform: [
                    ["babelify", {
                       "presets":["es2015"]
                    }]
                 ]
              },
              files: {               
                 "./dist/module.js": ["./modules/index.js"]
              }
           }
        },
  
     });
  
     grunt.loadNpmTasks("grunt-browserify"); 
     grunt.registerTask("default", ["browserify"]);
  };
  </code></pre>
  
  <p>Then I go to <a href="http://babeljs.io/docs/usage/options/" rel="nofollow">browserify website</a> to read documentation.
  There is <code>presets</code>, but no <code>transform</code>. How do I know that I should nest dist>options>transform, and have a <code>presets</code> in it? and do I able to use <code>loose: "all"</code>?
  Same question when I try to understand grunt, why does people use <code>dist</code>, is it for cli (run grunt --target=dist)? </p>
  
  <p>Sorry if I sound stupid, having hard time understanding grunt options for days.</p>