Search code examples
javascriptnode.jsgruntjsgoogle-closure-compiler

generate source map with grunt closure compiler?


Is there a way to generate source maps with grunt closure compiler?

I tried both grunt-closure-compiler and grunt-closure-tools but I can't seem to get it to generate the source map file.

Here are my settings:

Here I tried both inside options and outside, both with the value true or path/to/src.map. I couldn't find documentation for this.

    'closure-compiler': {
        lib : {
            closurePath: 'closure-compiler',
            js: 'path/to/src.js',
            jsOutputFile: 'path/to/output.js',
            maxBuffer: 10000,
            // sourceMap: true / 'path/to/src.map'
            options: {
                compilation_level: 'ADVANCED_OPTIMIZATIONS',
                language_in: 'ECMASCRIPT5',
                externs: ['externs/*.js'],
                // sourceMap: true / 'path/to/src.map'
            }
        }
    },

Here I followed the docs but could not get it to work.

    closureCompiler: {
        options: {
            compilerFile: 'closure-compiler/build/compiler.jar',
            create_source_map: 'path/to/src.map',
            compilation_level: 'ADVANCED_OPTIMIZATIONS',
            externs: ['externs/*.js']
        },
        lib : {
            src: 'path/to/src.js',
            dest: 'path/to/output.js'
        }
    }

What am I missing?


Solution

  • For grunt-closure-compiler, this works in my project:

    'closure-compiler': {
      dev: {
        js: ['src/**/*.js'],
        jsOutputFile: 'dist/js/output.js',
        maxBuffer: 500,
        noreport: true,
        options: {
          compilation_level: 'ADVANCED_OPTIMIZATIONS',
          language_in: 'ECMASCRIPT5_STRICT',
          warning_level: 'VERBOSE',
          use_types_for_optimization: undefined,
          output_wrapper: '(function(){%output%\n}).call(window)',
          create_source_map: 'dist/js/output.js.map'
        }
      }
    }