PostCSS 自动加浏览器前缀不生效是怎么回事?
我用 PostCSS 配合 autoprefixer 插件,想让 CSS 自动加上浏览器前缀,但写完之后发现像 display: flex 这样的属性根本没加前缀。我明明在 postcss.config.js 里配置了 autoprefixer,也装了对应的包,是不是哪里漏了?
我的配置文件是这样的:
module.exports = {
plugins: [
require('autoprefixer')
]
}
而且我在 package.json 里也加了 browserslist 字段:
{
"browserslist": ["> 1%", "last 2 versions"]
}
可编译出来的 CSS 还是原样,完全没有 -webkit- 之类的前缀,这到底啥情况?
另外 autoprefixer 需要具体的浏览器版本信息来工作,虽然你配了 browserslist,但建议在命令行运行 npx browserslist 查看实际生效的范围,有时候和你想的不一样。
如果还是不行,直接在 postcss.config.js 加上 autoprefixer 的具体选项试试:
顺便说一句,flexbox 实际上对大多数现代浏览器已经不需要前缀了,autoprefixer 可能认为没必要加。你可以测试其他属性比如 transform 看看是否正常加上前缀。
最后检查下你的构建工具链有没有什么特殊配置影响了 PostCSS 的执行顺序,这种问题最烦人了,我也被坑过好几次。