This plugin enables more fine grained control of source map generation. It is an alternative to the devtool
configuration option.
new webpack.SourceMapDevToolPlugin(options)
The following options are supported:
test
(string|regex|array
): Include source maps for modules based on their extension (defaults to .js
and .css
).include
(string|regex|array
): Include source maps for module paths that match the given value.exclude
(string|regex|array
): Exclude modules that match the given value from source map generation.filename
(string
): Defines the output filename of the SourceMap (will be inlined if no value is provided).append
(string
): Appends the given value to the original asset. Usually the #sourceMappingURL
comment. [url]
is replaced with a URL to the source map file. false
disables the appending.moduleFilenameTemplate
(string
): See output.devtoolModuleFilenameTemplate
.fallbackModuleFilenameTemplate
(string
): See link above.module
(boolean
): Indicates whether loaders should generate source maps (defaults to true
).columns
(boolean
): Indicates whether column mappings should be used (defaults to true
).lineToLine
(object
): Simplify and speed up source mapping by using line to line source mappings for matched modules.publicPath
(string
): Emits absolute URLs with public path prefix, e.g. https://example.com/project/
.fileContext
(string
): Makes the [file]
argument relative to this directory.The lineToLine
object allows for the same test
, include
, and exclude
options described above.
The fileContext
option is useful when you want to store source maps in an upper level directory to avoid ../../
appearing in the absolute [url]
.
Settingmodule
and/orcolumns
tofalse
will yield less accurate source maps but will also improve compilation performance significantly.
The following examples demonstrate some common use cases for this plugin.
The following code would exclude source maps for any modules in the vendor.js
bundle:
new webpack.SourceMapDevToolPlugin({
filename: '[name].js.map',
exclude: ['vendor.js']
})
Set a URL for source maps. Useful for hosting them on a host that requires authorization.
new webpack.SourceMapDevToolPlugin({
append: "\n//# sourceMappingURL=http://example.com/sourcemap/[url]",
filename: '[name].map'
})
And for cases when source maps are stored in the upper level directory:
project
|- dist
|- public
|- bundle-[hash].js
|- sourcemaps
|- bundle-[hash].js.map
With next config:
new webpack.SourceMapDevToolPlugin({
filename: "sourcemaps/[file].map",
publicPath: "https://example.com/project/",
fileContext: "public"
})
Will produce the following URL:
https://example.com/project/sourcemaps/bundle-[hash].js.map`