webpack处理css
在 Webpack 中处理 CSS,通常需要下面的loader和plugin
- 预处理less/sass/stylus:把less代码转成css代码,让css-loader解析
- 后处理postcss:对写的css代码进行后处理,如添加浏览器前缀
- css-loader:把css文件编译成模块让 webpack 理解,支持css module
- style-loader:css代码打包到js代码里,通过
<style>
标签插入html - mini-css-extract-plugin:单独抽离成css文件进行加载,并且该库含plugin+loader,需同时使用
- 使用 CssMinimizerWebpackPlugin 压缩 CSS
rules: [
{
test: /\.less$/,
use: [
// 'style-loader',
MiniCssExtractPlugin.loader,
{
loader: "css-loader",
options: {
importLoaders: 1
}
},
{
loader: "postcss-loader",
options: {
postcssOptions: {
plugins: [require('autoprefixer')]
}
}
},
'less-loader'
]
}
],
plugins: [
new MiniCssExtractPlugin(),
],
postcss通常结合autoprefixer使用,补全浏览器前缀
{
loader: "postcss-loader",
options: {
postcssOptions: {
plugins: [require('autoprefixer')]
}
}
}
#或配置postcss.config.js
const autoprefixer = require('autoprefixer')
module.exports = {
plugins: [
autoprefixer({
overrideBrowserslist: [
"last 2 versions",
"> 1%",
"iOS 7",
"last 3 iOS versions"
]
})
]
}
注意:css插件执行顺序很重要:
(*webpack插件顺序是从数组最后一项开始执行)
less-loader -> postcss-loader -> css-loader -> style-loader/mini-css-extract-plugin