背景
工作中有一个项目,最开始的时候配置了使用postcss-plugin-px2rem做简单的rem适配。
环境
@vue/cli V3.6.3
postcss-plugin-px2rem V0.8.1
配置方式
vue.config.js
module.exports = {
css: {
loaderOptions: {
postcss: {
plugins: [
require('postcss-plugin-px2rem')({
remValue: 100,
mediaQuery: true, //(布尔值)允许在媒体查询中转换px。
minPixelValue: 3 //设置要替换的最小像素值(3px会被转rem)。 默认 0
})
]
}
}
}
}
一开始的时候项目正常运行,也能转换。后来一直没有关注过这个项目。今天突然来看看这个项目,发现这个规则失效了。又是看官方文档,又是看博客的,甚至还怀疑less是不是要做额外的配置(我在另外一个项目中用sass是可以的)。最终发现package.json中
"postcss": {
"plugins": {
"autoprefixer": {}
}
}
我心想,这里配置了postcss的插件,但是里面没有配置postcss-plugin-px2rem,是不是这里也要配置。于是尝试:
"postcss": {
"plugins": {
"autoprefixer": {},
"postcss-plugin-px2rem":{
"rootValue": 100,
"mediaQuery": true,
"minPixelValue": 3
}
}
}
神奇地发现可以了。。。。
虽然解决了,但是我仍然不知道原因。我的感觉是,vue.config.js中的配置,最终应该会合并到postcss的插件里面去的呀,为什么这里会失效呢。请知道的大神不吝告知,谢谢