- postcss只处理CSS,概念简洁;
- 提供高拓展性的插件系统支持按需引入不同插件,实现不同处理;
- 使用JavaScript插件,开发者可以很方便定制项目插件;
- 提供CSS节点树API,可以高效的进行CSS处理;
安装
在webpack中使用,需要先安装对应加载器:
npm install --save-dev postcss-loader
插件
postcss目前有200+插件,足够满足绝大部分项目开发需求,可以查看postcss插件,我们介绍几个主要使用的插件。
Autoprefixer
回顾一下在预处理器中,如果我们需要为CSS代码添加属性前缀,需要这么实现呢?对于Sass,我们通常使用mixin,即混合宏,处理CSS属性前缀,如:
// 定义
@mixin prefix-animation($animation-name){
animation:$animation-name;
-webkit-animation:$animation-name;
}
// 使用
body{
@include prefix-animation(loading .5s linear infinite);
}
如上,我们需要按照定义的语法和模板:先定义一个mixin,然后通过@include方式使用,最后才能输出添加前缀的CSS代码,当代码越来越多时,我们需要定义的mixin也会越来越多,而且不同预处理器定义的语法和模板都有差异,学习成本、转换成本都很可能令人难以接受。
那么postcss插件怎么处理的呢?postcss提供了Autoprefixer插件处理CSS属性前缀:
Autoprefixer插件基于Can I Use的数据,对CSS规则进行前缀处理。
安装
首先还是要安装Autoprefixer:
npm install --save-dev autoprefixer
配置
添加如下配置:
module: {
loaders: [
{
test: /\.css$/,
exclude: /node_modules/,
loaders: [
'style-loader',
'css-loader',
{
loader: 'postcss-loader',
options: {
plugins: [
require('autoprefixer')({
browsers: ['last 2 versions']
})
]
}
}
]
}
]
}
如上,我们知道postcss是一个样式开发解决方案,其特定功能需要引入插件实现,上例中在指定postcss-loader加载器时为其设置了插件配置autoprefixer;当然webpack还支持直接设置一个postcss配置文件,然后在项目根目录创建postcss.config.js配置文件,内容格式如下:
module.exports = {
plugins: [
require('autoprefixer')({
browsers: ['last 2 versions']
})
// or just require('autoprefixer')
]
}
使用autoprefixer插件时可选传入browsers参数,可以设置添加前缀的适配范围,详细可查阅browsers配置说明。

