webpack4系列教程,如何设置css的sourcemap?
发布于 作者:苏南大叔 来源:程序如此灵动~在webpack
中,目前来说,设置js
的sourcemap
比较容易,但是设置css
的sourcemap
就困难多了。因为css
的表现形式很多,有css
、scss
、less
,scss
和less
作为特殊的css
,是需要特殊处理的。
本文测试环境:win10
、node@14.2.0
、npm@6.14.4
、webpack@4.43.0
、mini-css-extract-plugin@0.9.0
、css-loader@3.5.3
、url-loader@4.1.0
、less@3.11.1
、less-loader@6.1.0
、node-sass@4.14.1
、sass-loader@8.0.2
、postcss@7.0.30
、postcss-loader@3.0.0
、webpack-px2rem-loader@1.0.2
。
基本设置
css-loader
、sass-loader
、less-loader
、还有postcss-loader
,都需要添加参数sourceMap:true
。所以,基本上来看,就是在webpack.config.js
里面,凭空多了很多个sourceMap:true
的项目。
对于一个css
/scss
/less
文件来说,有很多个loader
,如果其中一个没有配置上sourceMap:true
。那就可能是前功尽弃了。而且,通过上面的一个文章,可以看到:postcss
里面的px2rem
对scss
/less
文件的sourceMap
有影响。
下面的例子,是个scss
的配置,仅供参考。注意:css
/scss
/less
都需要做类似的设置:
{
test: /\.scss$/,
include: [path.resolve(__dirname, 'src')], // 限制打包范围,提高打包速度
exclude: /node_modules/, // 排除node_modules文件夹
use: [
{
loader: MiniCssExtractPlugin.loader,
options: {
publicPath: '../', //img图片路径
},
},
{
loader:'webpack-px2rem-loader',
options:{
basePx:100,
floatWidth:2,
min:1,
}
},
{
loader: 'css-loader',
options: {
sourceMap: true
}
},{
loader: "postcss-loader",
options: {
sourceMap: true
}
},
{
loader: "sass-loader",
options:{
sourceMap:true,
}
}
]
},
重点就是满屏幕的sourceMap:true
,相关的loader
都要加上,除了px2rem
和MiniCssExtractPlugin
。然后,就是devtool
这个值,要配置一个合适的值。在这里,苏南大叔配置的是:
devtool: 'inline-source-map',
相关链接:
整体的效果就是:
const path = require("path");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
//...
module.exports = {
//...
plugins: [
//...
],
devtool: 'inline-source-map',
module: {
rules: [
{
test: /\.css$/,
use: [
//...
],
},
{
test: /\.scss$/,
include: [path.resolve(__dirname, 'src')], // 限制打包范围,提高打包速度
exclude: /node_modules/, // 排除node_modules文件夹
use: [{
loader: MiniCssExtractPlugin.loader,
options: {
publicPath: '../', //img图片路径
},
},
{
loader: 'webpack-px2rem-loader',
options: {
basePx: 100,
floatWidth: 2,
min: 1,
}
},
{
loader: 'css-loader',
options: {
sourceMap: true
}
}, {
loader: "postcss-loader",
options: {
sourceMap: true
}
},
{
loader: "sass-loader",
options: {
sourceMap: true,
}
}
]
},
{
test: /\.less$/,
use: [
//...
]
},
//...
]
},
}
浏览器调试效果
效果还不错,css
的sourcemap
调试效果如下:
相关链接
- https://newsn.net/say/webpack-css.html
- https://newsn.net/say/webpack-less.html
- https://newsn.net/say/webpack-scss.html
- https://newsn.net/say/webpack-px2rem.html
- https://newsn.net/say/webpack-sourcemap.html
- https://newsn.net/say/webpack-start.html
总结
在本文中,因为设置了devtool: 'inline-source-map'
,可能会影响js
的sourcemap
调试。这个,具体的以后文章再进行讨论。更多webpack
系列文章,请点击下面的链接:
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。