A Babel plugin which automatically makes stack traces source-map aware
npm install babel-plugin-source-map-support
$ cat test.js
import foo from 'foo';
import bar from 'bar';
foo(bar);
$ babel --plugins source-map-support test.js
import 'source-map-support/register';
import foo from 'foo';
import bar from 'bar';
foo(bar);
This is a Babel plugin which prepends the following statement to source files:
import 'source-map-support/register';
In conjunction with the source-map-support module, which must be installed separately, this statement hooks into the v8 stack-trace API to translate call sites in the transpiled code back to their corresponding locations in the original code.
Note: this only works in environments which support the v8 stack-trace API (e.g. Node.js and Chrome), though it's harmless in other environments.
The source-map-support module only needs to be registered in the top-level file(s) of an application, but it no-ops if it has already been loaded, so there is no harm in registering it in every file.
You probably don't want to use this plugin when compiling code for the web because you probably don't
want to include inline source maps in minified code. An easy way to limit the plugin's use to
development/test builds, is to use Babel's env
option e.g.:
{
env: {
development: {
sourceMaps: 'inline',
plugins: ['source-map-support', ...]
}
},
presets: [ ... ]
}
Source maps must currently be inline. While the source-map-support module provides a way to associate a file with an external source map, that is not currently supported by this plugin.
The following NPM scripts are available:
- release - run the test script in production mode, which compiles the plugin for release
- test - lint the codebase, compile the plugin, and run the test suite
- test:debug - run the test script in debug mode, which dumps each transformed test case
The following Gulp tasks are available:
- build - compile the plugin and save it to the target directory
- clean - remove the target directory and its contents
- default - run the
clean
,lint
andbuild
tasks - lint - check and report style and usage errors in the gulpfile, source file(s) and test file(s)
2.0.0
Copyright © 2015-2018 by chocolateboy
This module is free software; you can redistribute it and/or modify it under the terms of the Artistic License 2.0.