Generating source maps for PureScript bundles
Posted on
If you're building a frontend app with PureScript, you might want to analyse the resulting JavaScript bundle to see which Purescript modules generated the most code. The tooling doesn't really advertise it, but it is possible to generate source maps for this purpose.
With the PureScript compiler directly
The compiler has a --source-maps
flag that can be used in conjunction with the bundle
command.
Your workflow might look like this:
# Compile your project to the `output` directory
purs compile src/Main.purs bower_components/**/*.purs --output compiled
# Bundle your project and generate source maps
purs bundle compiled/**/*.js --output bundle.js --source-maps
In this example the bundle and its source map will be output as bundle.js
and bundle.js.map
.
The --output
option is required in order for --source-maps
to work.
With Webpack and purs-loader
Pass the bundle
and pscBundleArgs
options in your Webpack configuration:
...
{
test: /\.purs$/,
loader: "purs-loader",
options: {
bundle: true,
pscBundleArgs: { 'source-maps': true }
}
}
...
By default, the bundle.js
and bundle.js.map
will be placed in the output
directory.
With Pulp
pulp build --to bundle.js --source-maps
Note that the --to
option is required for --source-maps
to work.
Analysing the source maps
The source-map-explorer
tool will give you a nice treemap visualisation.