此插件可以更精细地控制源映射生成。它也会在 devtool
配置选项的某些设置下自动启用。
new webpack.SourceMapDevToolPlugin(options);
支持以下选项
test
(string
RegExp
[string, RegExp]
): 根据模块扩展名(默认为 .js
、.mjs
和 .css
)包含 Source Map。
include
(string
RegExp
[string, RegExp]
): 包含与给定值匹配的模块路径的 Source Map。
exclude
(string
RegExp
[string, RegExp]
): 从 Source Map 生成中排除与给定值匹配的模块。
filename
(string
): 定义 Source Map 的输出文件名(如果未提供值,则将内联)。
append
(string
function
false
): 将给定值附加到原始资产。通常是 #sourceMappingURL
注释。[url]
会被替换为 Source Map 文件的 URL。自 webpack v4.36.0 起,支持路径参数:[chunk]
、[filename]
和 [contenthash]
。将 append
设置为 false
可禁用附加。
从版本 5.84.0 开始,webpack 允许 append
选项是一个函数,该函数接受路径数据和资产信息对象作为参数,并返回一个字符串。
(pathData: PathData, assetInfo?: AssetInfo) => string;
moduleFilenameTemplate
(string
):请参阅 output.devtoolModuleFilenameTemplate
。
fallbackModuleFilenameTemplate
(string
): 请参见上方链接。
namespace
(string
): 请参见 output.devtoolNamespace
。
module = true
(boolean
): 指示加载器是否应生成 Source Map。
columns = true
(boolean
): 指示是否应使用列映射。
noSources = false
(boolean
): 防止源文件内容包含在 Source Map 中。
publicPath
(string
): 使用公共路径前缀(例如 https://example.com/project/
)发出绝对 URL。
fileContext
(string
): 使 [file]
参数相对于此目录。
sourceRoot
(string
): 为 Source Map 中的 sourceRoot
属性提供自定义值。
debugIds
(boolean
): 如果为 true
,将在源文件和 Source Map 中发出唯一的 ID,这有助于简化跨不同构建识别 Source Map。有关更多详细信息,请参阅 TC39 Source Map 调试 ID 提案。
fileContext
选项在您希望将 Source Map 存储在上级目录以避免绝对 [url]
中出现 ../../
时很有用。
以下示例展示了此插件的一些常见用例。
您可以使用以下代码将配置选项 devtool: inline-source-map
替换为等效的自定义插件配置
module.exports = {
// ...
devtool: false,
plugins: [new webpack.SourceMapDevToolPlugin({})],
};
以下代码将排除 vendor.js
包中任何模块的源映射
new webpack.SourceMapDevToolPlugin({
filename: '[file].map[query]',
exclude: ['vendor.js'],
});
为 Source Map 设置 URL。这对于将其托管在需要授权的主机上很有用。
new webpack.SourceMapDevToolPlugin({
append: '\n//# sourceMappingURL=https://example.com/sourcemap/[url]',
filename: '[file].map[query]',
});
以及 Source Map 存储在上级目录中的情况
project
|- dist
|- public
|- bundle-[hash].js
|- sourcemaps
|- bundle-[hash].js.map
使用以下配置
new webpack.SourceMapDevToolPlugin({
filename: 'sourcemaps/[file].map',
publicPath: 'https://example.com/project/',
fileContext: 'public',
});
将生成以下 URL
https://example.com/project/sourcemaps/bundle-[hash].js.map