详解Vue CLI3配置解析之css.extract
大家还记得我们在老版本中,对于线上环境配置中会把所有的css多打成一个文件:
核心是使用了插件extract-text-webpack-plugin,方式如下:
第一步都是加载插件
constExtractTextPlugin=require('extract-text-webpack-plugin')
这个插件的描述如下:
Extracttextfromabundle,orbundles,intoaseparatefile.
然后配置如下:(省去了rules相关的配置)
一般配置filename来保证最终生成的css文件名
plugins:[
newExtractTextPlugin({
filename:utils.assetsPath('css/[name].[contenthash].css')
})
]
我们可以预先用vueinspect--pluginextract-css看看最终生成的配置:
/*config.plugin('extract-css')*/
newMiniCssExtractPlugin(
{
filename:'css/[name].[contenthash:8].css',
chunkFilename:'css/[name].[contenthash:8].css'
}
)
在文件@vue/cli-service/lib/config/css.js中:
最开始需要获取vue.config.js里面配置的css.extract:
constisProd=process.env.NODE_ENV==='production'
const{
extract=isProd
}=options.css||{}
设置一个变量shouldExtract
constshadowMode=!!process.env.VUE_CLI_CSS_SHADOW_MODE constshouldExtract=extract!==false&&!shadowMode
如果变量shouldExtract为true,调用plugin方法来生成一个插件配置:
这里依赖的插件为mini-css-extract-plugin
if(shouldExtract){
webpackConfig
.plugin('extract-css')
.use(require('mini-css-extract-plugin'),[extractOptions])
}
filename内部也有一个判断过程,如果设置了filenameHashing,它默认是true:
filenameHashing:true
类型为boolean:
filenameHashing:joi.boolean()
constfilename=getAssetPath(
options,
`css/[name]${options.filenameHashing?'.[contenthash:8]':''}.css`
)
处理filename之后,插件还有一个配置项:chunkFilename
下面就是通过Object.assign来生成extractOptions
constextractOptions=Object.assign({
filename,
chunkFilename:filename
},extract&&typeofextract==='object'?extract:{})
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
热门推荐
10 香港老妈结婚祝福语简短
11 毕业立体贺卡祝福语简短
12 简短新年年会祝福语
13 评论小品祝福语大全简短
14 恭喜师兄结婚祝福语简短
15 员工集体辞职祝福语简短
16 高中新生祝福语 简短
17 装修祝福语男生搞笑简短
18 生日开业蛋糕祝福语简短