从现有的源文件中提取 source maps(从 sourceMappingURL
中提取)。
安装 source-map-loader
:
npm i -D source-map-loader
添加 plugin 至 webpack
配置。例:
file.js
import css from 'file.css';
webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.js$/,
enforce: 'pre',
use: ['source-map-loader'],
},
],
},
};
source-map-loader
从 JavaScript 入口提取现有的 source maps.
这些 source maps 既可以是内联的也可以是通过 URL 链接引入的。
所有的 source map 数据都按照选定的 source map style 交给 webpack 处理,这些选定可以在 webpack.config.js 的 devtool
选项中配置。
在使用有自己 source maps 的第三方库时,source-map-loader
就显得尤为重要。
如果相关 source map 数据没有按照规范提取、处理并注入 webpack bundle, 浏览器有可能无法正确解读这些数据。source-map-loader
允许 webpack 跨库且持续的维护 source map 数据,因而更易于调试。
source-map-loader
可以从任何 JavaScript 文件中提取,这也包括 node_modules
目录下的 JavaScript 文件。
在设置 include 和 exclude 规则时,要保证构建性能最优。
最后按偏好运行 webpack
方法。
选项名 | 类型 | 默认值 | 描述 |
---|---|---|---|
filterSourceMappingUrl | {Function} | undefined | 允许控制 SourceMappingURL 的行为 |
类型:Function
默认值:undefined
允许你为 SourceMappingURL
注释指定 loader 的特定行为。
此函数的返回值必须为下列之一:
true
或 'consume'
— 使用 source map 并删除 SourceMappingURL
注释(默认行为)false
或 'remove'
— 不使用 source map 并删除 SourceMappingURL
注释skip
— 不使用 source map 但不删除 SourceMappingURL
注释示例配置:
webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.js$/,
enforce: 'pre',
use: [
{
loader: 'source-map-loader',
options: {
filterSourceMappingUrl: (url, resourcePath) => {
if (/broker-source-map-url\.js$/i.test(url)) {
return false;
}
if (/keep-source-mapping-url\.js$/i.test(resourcePath)) {
return 'skip';
}
return true;
},
},
},
],
},
],
},
};
忽略警告可以使用以下配置:
webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.js$/,
enforce: 'pre',
use: ['source-map-loader'],
},
],
},
ignoreWarnings: [/Failed to parse source map/],
};
欲了解 ignoreWarnings
的更多信息,请查阅此文。
如果您尚未了解,建议您阅读以下贡献指引。