The reason we code it with an init method is grunt tasks and related libs need to use the grunt module for the project being built instead of the grunt module that this library is dependent on during development. Those could be different versions or installed in different directories which would lead `require('grunt')` in the task or the `lib/sourcemap.js` file to return a different module than the one we need to define our task on or use functions like `grunt.file.write`.