-
Notifications
You must be signed in to change notification settings - Fork 13
(二十五)抽取css样式文件
阿峰 edited this page Jun 29, 2023
·
2 revisions
在开发环境我们希望css嵌入在style标签里面,方便样式热替换,但打包时我们希望把css单独抽离出来,方便配置缓存策略。而插件mini-css-extract-plugin就是来帮我们做这件事的,
- 安装依赖:
npm i mini-css-extract-plugin -D
- 修改webpack.base.js, 根据环境变量设置开发环境使用style-looader,打包模式抽离css
// webpack.base.js
// ...
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const isDev = process.env.NODE_ENV === 'development' // 是否是开发模式
module.exports = {
// ...
module: {
rules: [
// ...
{
test: /.css$/, //匹配所有的 css 文件
include: [path.resolve(__dirname, '../src')],
use: [
isDev ? 'style-loader' : MiniCssExtractPlugin.loader, // 开发环境使用style-looader,打包模式抽离css
'css-loader',
'postcss-loader'
]
},
{
test: /.less$/, //匹配所有的 less 文件
include: [path.resolve(__dirname, '../src')],
use: [
isDev ? 'style-loader' : MiniCssExtractPlugin.loader, // 开发环境使用style-looader,打包模式抽离css
'css-loader',
'postcss-loader',
'less-loader'
]
},
]
},
// ...
}
- 再修改webpack.prod.js, 打包时添加抽离css插件
// webpack.prod.js
// ...
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
module.exports = merge(baseConfig, {
mode: 'production',
plugins: [
// ...
// 抽离css插件
new MiniCssExtractPlugin({
filename: 'static/css/[name].css' // 抽离css的输出目录和名称
}),
]
})
配置完成后,在开发模式css会嵌入到style标签里面,方便样式热替换,打包时会把css抽离成单独的css文件。