记录一次postcss-plugin-px2rem失效问题

4,115 阅读1分钟

背景

工作中有一个项目,最开始的时候配置了使用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的插件里面去的呀,为什么这里会失效呢。请知道的大神不吝告知,谢谢