grunt-append-sourcemapping

Grunt task to append a JavaScript sourcemapping URL comment

npm install grunt-append-sourcemapping
35 downloads in the last day
140 downloads in the last week
674 downloads in the last month

grunt-append-sourcemapping

A Grunt task to append JavaScript sourcemapping URL comments to files. The Google Closure Compiler does not currently append the necessary sourcemapping URL comment to the output it produces, even when you ask it to generate a source map with the create_source_map option. This Grunt plugin will add that comment for you.

Installation

Just install via npm like usual:

npm install grunt-append-sourcemapping

Usage

This task assumes that you are using the Closure Compiler to handle JavaScript minification and source map generation. Chances are, you're using the grunt-closure-compiler plugin to do that, so you'll probably have a task in your Grunt file that looks something like this:

grunt.initConfig({
    "closure-compiler": {
        includeSourcemap: {
            js: [
                "inputFile.js",
                "inputFile2.js"
            ],
            jsOutputFile: "build/lib.min.js",
            options: {
                create_source_map: "build/lib.min.js.map",
                source_map_format: "V3"
            }
        }
    }
});

To append a sourcemapping URL comment at the end of the minified file, you need to tell Grunt to load the new task and then add another section to your config:

grunt.loadNpmTasks("grunt-append-sourcemapping"); // Load the task
grunt.initConfig({
    "closure-compiler": {
        // Closure compiler configuration
    },
    "append-sourcemapping": {
        main: {
            files: {
                "build/lib.min.js": "lib.min.js.map"
            }
        }
    } 
});

This will append the following comment to the end of lib.min.js (see this jQuery bug ticket for full details on why the wrapping multiline comment is necessary - in short, it's a workaround for an Internet Explorer issue):

/*
//@ sourceMappingURL=lib.min.js.map
*/

You can specify any number of files in the files property, and as this is a Grunt multitask you can specify different targets too.

npm loves you