Blog>
Snippets

Minified JavaScript with Source Maps

Demonstrate step-by-step how to generate source maps for a minified JavaScript bundle to maintain the ability to debug in production.
const UglifyJS = require('uglify-js');
const fs = require('fs');

// Original JavaScript code
const originalCode = `function hello(name) {\n    console.log('Hello, ' + name);\n}`;

// Options for the UglifyJS minifier
const options = {
    sourceMap: {
        filename: 'out.js', // Output filename
        url: 'out.js.map' // URL of the source map
    }
};

// Minify the original code
const result = UglifyJS.minify(originalCode, options);

if (result.error) {
    console.error('Minification failed:', result.error);
    process.exit(1);
}

// Write the minified output to a file
fs.writeFileSync('out.js', result.code);
// Write the source map to a file
fs.writeFileSync('out.js.map', result.map);
This code uses UglifyJS to minify a JavaScript function and generate a source map. The `sourceMap` option is set to provide filenames for the output and the source map. After minification, both the minified code and the source map are written to files.
// Link to source maps in the minified JS file
//# sourceMappingURL=out.js.map
At the end of the minified JavaScript file ('out.js'), this line is appended as a comment. It tells the JavaScript engine or debugger where to find the source map file ('out.js.map') for the minified code, which is necessary for debugging.