mini-css-extract-plugin简介

更新时间:2023-07-23 14:03:08 阅读: 评论:0

mini-css-extract-plugin简介
将css单独打包成⼀个⽂件的插件,它为每个包含css的js⽂件都创建⼀个css⽂件。它⽀持css和sourceMaps的按需加载。⽬前只有在webpack V4版本才⽀持使⽤该插件
和extract-text-webpack-plugin相⽐:
异步加载
⽆重复编译,性能有所提升
⽤法简单
之⽀持css分割
例⼦:
⽀持HMR
* Install *
```js npm install --save-dev mini-css-extract-plugin ```
⽤法
什么食物下奶简单的例⼦
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
plugins:[
new MiniCssExtractPlugin({
// Options similar to the same options in webpackOptions.output
// both options are optional
filename: "[name].css",
chunkFilename: "[id].css"
})
],
module: {
rules: [
{
test: /\.css$/,
u: [
{
loader: MiniCssExtractPlugin.loader,
options: {
// you can specify a publicPath here
/
/ by default it u publicPath in webpackOptions.output
publicPath: '../'
}
},
"css-loader"
]
}描述心情的句子
]
}
}
⾼级的配置
这个插件应该只在⽣产环境构建中使⽤,并且在loader链中不应该有style-loader,特别是我们在开发模式中使⽤HMR时。下⾯是⼀个在开发模式中使⽤HMR并在⽣产环境构建的⽂件中提出出css样式的⽰例。
(各个loader的配置根据你的需求进⾏⾃定义修改)
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const devMode = v.NODE_ENV !== 'production'
plugins: [
new MiniCssExtractPlugin({
// Options similar to the same options in webpackOptions.output
// both options are optional
filename: devMode ? '[name].css' : '[name].[hash].css',
chunkFilename: devMode ? '[id].css' : '[id].[hash].css',
})
],
module: {
rules: [
{
test: /\.(sa|sc|c)ss$/,
u: [
devMode ? 'style-loader' : MiniCssExtractPlugin.loader,
'css-loader',
'postcss-loader',
'sass-loader',
],
}
]
}
}
⽣产环境最⼩化
等到webpack V5时,有可能会将css压缩功能进⾏集成,但是在webpack V4,我们还需要⼿动使⽤optimize-css-asts-webpack-plugin来进⾏css的压缩。配置wepack的optimization.minimizer选项来覆盖webpack的默认配置。同时也要指定⼀个js压缩器。
const UglifyJsPlugin = require("uglifyjs-webpack-plugin");
母鸡萝丝去散步教案const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const OptimizeCSSAstsPlugin = require("optimize-css-asts-webpack-plugin");
optimization: {
minimizer: [
new UglifyJsPlugin({
cache: true,
方法论打一中药名parallel: true,
sourceMap: true // t to true if you want JS source maps
}),
new OptimizeCSSAstsPlugin({})
]
},
plugins: [
new MiniCssExtractPlugin({
filename: "[name].css",
chunkFilename: "[id].css"
})
],
module: {
rules: [
{
test: /\.css$/,
u: [
褚蒜子MiniCssExtractPlugin.loader,
"css-loader"
]
}
]
}
}
}
其他功能
使⽤预加载或内联CSS
运⾏时代码通过link 或 style标签检测已经添加的css,当在服务端注⼊css为了在服务端进⾏渲染时是⾮常有⽤的。link标签的href属性⽤来匹配被加载的css块的URL,data-href属性也可以在link和style标签上使⽤,当使⽤内联样式的时候必须使⽤href.
提取所有的css到⼀个⽂件中
类似于 extract-text-webpack-plugin的作⽤,可以使⽤optimization.splitChunks.cacheGroups来将css提取到⼀个⽂件中
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
optimization: {
splitChunks: {
cacheGroups: {
styles: {
name: 'styles',
test: /\.css$/,
chunks: 'all',
enforce: true
}
}
}
},
plugins: [
new MiniCssExtractPlugin({
filename: "[name].css",
})
],
module: {
rules: [
{
test: /\.css$/,
u: [
MiniCssExtractPlugin.loader,
"css-loader"
]
}
]
}
西安外企}
根据webpack 的 entry 提取 css
还可以根据webpack entry提取CSS。如果动态导⼊路由,但希望根据条⽬将CSS绑定在⼀起,那么这⼀点尤其有⽤。这也防⽌了使⽤ExtractTextPlugin时出现的CSS复制问题。
const path = require('path');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
function recursiveIssuer(m) {
if (m.issuer) {
return recursiveIssuer(m.issuer);
} el if (m.name) {
return m.name;
} el {
return fal;
}
}
entry: {
foo: solve(__dirname, 'src/foo'),
bar: solve(__dirname, 'src/bar')
},
plugins: [
态度决定高度
材料会计new MiniCssExtractPlugin({
filename: "[name].css",
})
],
module: {
rules: [
{
test: /\.css$/,
u: [
MiniCssExtractPlugin.loader,
"css-loader"
]
}
]
},
optimization:{
splitChunks:{
cacheGroups:{
fooStyles:{
fooStyles: {
name: 'foo',
test: (m,c,entry = 'foo') => m.constructor.name === 'CssModule' && recursiveIssuer(m) === entry,
chunks: 'all',
enforce: true
}
}
}
}
}
}

本文发布于:2023-07-23 14:03:08,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1093350.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:压缩   配置   出现   样式   覆盖   标签   插件
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图