webpack4系列教程,跳过postcss直接使用px2rem
发布于 作者:苏南大叔 来源:程序如此灵动~webpack4
系列教程,如何跳过postcss
直接使用px2rem
功能呢?在前面的文章里面,大家可以看到:苏南大叔是利用postcss
使用px2rem
的。那么为啥要跳过postcss
呢?因为postcss
里面的px2rem
,和苏南大叔新实验的一个功能冲突了....
本文测试环境: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
。
事情的起因
苏南大叔要使用scss
和less
的sourcemap
功能,然后发现sourcemap
在postcss
的px2rem
里面,被减少了信息。在浏览器里面查看的时候,.scss
的内容,是px2rem
替换过的内容,而不是原始的.scss
内容。
所以,苏南大叔决定:把px2rem
功能移动到webpack
里面来,然后调整loader
的加载顺序,让px2rem
最后一个处理css
文件。从而保留了较为完整的sourcemap
信息。
安装webpack-px2rem-loader
:
npm i webpack-px2rem-loader -D
配置项目
配置项目,主要需要配置css
、scss
、less
的项目,下面以scss
的配置为例(css
和less
也是需要类似设置的哦):
注意:webpack
对loader
的加载,是从后往前处理的,所以,webpack-px2rem-loader
在配置代码中的顺序,要尽量靠前,也就是说loader
的加载顺序里面要尽量靠后了。
{
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,
}
},
"css-loader",
"postcss-loader",
"sass-loader",
]
},
注意:要移除在postcss.config.js
里面,对px2rem
的功能引用。
关键配置项目
{
loader:'webpack-px2rem-loader',
options:{
basePx:100,
floatWidth:2,
min:1,
}
},
basePx
,这个就是多少像素等于1rem
,一般都是设置为100
。floatWidth
,这个就是换算成rem
之后,要保留几位小数。min
这个功能是新加的,因为很小的px(比如border的1px)转换为rem后在很小的设备上结果会小于1px,有的设备就会不显示。
相关链接
- https://newsn.net/say/vscode-px2rem.html
- https://newsn.net/say/webpack-postcss-px2rem.html
- https://newsn.net/say/webpack-start.html
总结
反正这个px2rem
也是个可有可无的项目,但如果是能够用得上,那定是极好的。更多webpack
的故事,还是看看下面的链接吧~
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。