Webpack 打包后 CSS Source Map 为啥不生效?

东方曦月 阅读 43

我用 Webpack 打包项目,启用了 source map,JS 的能正常定位到源码,但 CSS 始终显示的是打包后的 bundle.css,没法跳回原始的 .scss 文件。我在开发环境里配置了 devtool: ‘source-map’,也给 MiniCssExtractPlugin 加了 sourceMap: true,但还是不行。

我的 CSS 是这样写的:

.header {
  background-color: #333;
  padding: 1rem;
  color: white;
}

浏览器开发者工具里点进去还是 bundle.css,这到底是哪儿没配对?

我来解答 赞 10 收藏
二维码
手机扫码查看
2 条解答
Air-芳芳
这个情况我遇到过,多半是配置上漏了点东西。Webpack 5 处理 CSS source map 有点小坑,得特别注意 loader 链上每个环节都要开 source map。

先检查下你的 webpack.config.js 是不是类似这样配的:

{
devtool: 'source-map',
module: {
rules: [
{
test: /.scss$/,
use: [
{
loader: MiniCssExtractPlugin.loader,
options: { sourceMap: true }
},
{
loader: 'css-loader',
options: { sourceMap: true }
},
{
loader: 'sass-loader',
options: { sourceMap: true }
}
]
}
]
},
plugins: [
new MiniCssExtractPlugin({
filename: '[name].css',
sourceMap: true
})
]
}


关键点在于:
1. css-loader 和 sass-loader 必须都设置 sourceMap: true
2. MiniCssExtractPlugin 本身和它的 loader 也要开 source map
3. 确保浏览器开发者工具里的 CSS source map 选项是开启状态(默认应该开着)

安全提醒:生产环境记得关闭 source map,防止源码泄露。可以这样判断环境:
devtool: process.env.NODE_ENV === 'development' ? 'source-map' : false


如果还不行,试试清空 webpack 缓存和浏览器缓存,有时候这玩意儿会抽风。
点赞
2026-03-08 19:22
シ俊贺
シ俊贺 Lv1
你这配置其实差了关键一步,Webpack 的 CSS source map 要生效,得同时满足三个条件:CSS loader 开了 sourceMap、MiniCssExtractPlugin 开了 sourceMap,还有最重要的——CSS 要走 extract 流程前已经被正确处理成带 source map 的中间产物。

你用了 MiniCssExtractPlugin,那得确认 mini-css-extract-plugin 的版本是不是 ≥ 1.6.0,老版本对 source map 支持有坑。另外 css-loadersourceMap 选项要显式设为 true,别光依赖默认值,因为很多 loader chain 里默认是关的。

典型配置长这样:

module: {
rules: [
{
test: .scss$/,
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: {
sourceMap: true,
importLoaders: 2,
},
},
{
loader: 'sass-loader',
options: {
sourceMap: true,
},
},
],
},
],
},
plugins: [
new MiniCssExtractPlugin({
filename: '[name].css',
chunkFilename: '[id].css',
sourceMap: true,
}),
],
devtool: 'source-map',


注意 css-loadersass-loader 都得显式开 sourceMap: true,而且顺序不能乱——loader 是从右到左执行的,source map 信息得一层层往下传。

要是你用的是 Webpack 5 + 新版 loader,还建议确认下 devServer.devtoolModuleFilenameTemplate 没被改过,有些脚手架会偷偷覆盖这个导致 source map 映射错位。

最后提醒一句:Chrome 开发者工具里得在「Sources」面板右上角那个齿轮设置里确认「Enable CSS source maps」是勾上的,这个坑我踩过两次……
点赞 3
2026-02-25 11:03