博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Vue CLI 3] 配置解析之 css.extract
阅读量:6885 次
发布时间:2019-06-27

本文共 1710 字,大约阅读时间需要 5 分钟。

大家还记得我们在老版本中,对于线上环境配置中会把所有的 css 多打成一个文件

核心是使用了插件 extract-text-webpack-plugin,方式如下:

第一步都是加载插件

const ExtractTextPlugin = require('extract-text-webpack-plugin')

这个插件的描述如下:

Extract text from a bundle, or bundles, into a separate file.

然后配置如下:(省去了 rules 相关的配置)

一般配置 filename 来保证最终生成的 css 文件名

plugins: [  new ExtractTextPlugin({      filename: utils.assetsPath('css/[name].[contenthash].css')  })]

我们可以预先用 vue inspect --plugin extract-css 看看最终生成的配置:

/* config.plugin('extract-css') */new MiniCssExtractPlugin(  {    filename: 'css/[name].[contenthash:8].css',    chunkFilename: 'css/[name].[contenthash:8].css'  })

在文件 @vue/cli-service/lib/config/css.js 中:

最开始需要获取 vue.config.js 里面配置的 css.extract

const isProd = process.env.NODE_ENV === 'production'const {  extract = isProd} = options.css || {}

设置一个变量 shouldExtract

const shadowMode = !!process.env.VUE_CLI_CSS_SHADOW_MODEconst shouldExtract = 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()
const filename = getAssetPath(      options,      `css/[name]${options.filenameHashing ? '.[contenthash:8]' : ''}.css`    )

处理 filename 之后,插件还有一个配置项:chunkFilename

下面就是通过 Object.assign 来生成 extractOptions

const extractOptions = Object.assign({      filename,      chunkFilename: filename    }, extract && typeof extract === 'object' ? extract : {})

来源:https://segmentfault.com/a/1190000016390112

转载于:https://www.cnblogs.com/lovellll/p/10138775.html

你可能感兴趣的文章
00308
查看>>
【HDU5909】Tree Cutting(FWT)
查看>>
Code Chef January Challenge 2019题解
查看>>
Lucas卢卡斯定理
查看>>
洛谷P4213 【模板】杜教筛(Sum)(杜教筛,莫比乌斯反演)
查看>>
在Linux系统下通过TFTP或NFS烧写内核
查看>>
解决:C#除非指定UpdateCommand,否则数据源SqlDataSource不支持更新操作
查看>>
v-cloak指令
查看>>
js定义多行字符串
查看>>
python基础===map, reduce, filter的用法
查看>>
还款计算-复式记账
查看>>
C# 利用性能计数器监控网络状态
查看>>
网络对抗技术作业一
查看>>
最短路(Floyd_Warshall) POJ 2240 Arbitrage
查看>>
select2使用
查看>>
POJ1816:Wild Words——题解
查看>>
12.使用default-Action配置统一访问
查看>>
mysql建表---级联删除
查看>>
分布式队列神器 Celery
查看>>
windows 允许其他电脑访问本地mysql数据库
查看>>