摘要:大家还记得我们在老版本中,对于线上环境配置中会把所有的多打成一个文件核心是使用了插件,方式如下第一步都是加载插件这个插件的描述如下然后配置如下省去了相关的配置一般配置来保证最终生成的文件名我们可以预先用看看最终生成的配置
大家还记得我们在老版本中,对于线上环境配置中会把所有的 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_MODE const 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://www.ucloud.cn/yun/97758.html
摘要:慢慢地,关于的原创学习文章已经写了多篇了会一直放出来,目前篇,因此做一个合集,献给那些对新版本脚手架使用和背后设计感兴趣的同学,都是一步一步去看源码,也给官方提了几次,合进去了几个原创不易,欢迎大家互相转发,期望大家一起快速过度到版本目录 慢慢地,关于 Vue CLI 3 的原创学习文章已经写了 20 多篇了(会一直放出来,目前 23 篇), 因此做一个合集,献给那些对新版本脚手架使用...
容易混淆概念解析 读这篇文章理清下面概念 webpack 中那些最易混淆的 5 个知识点 1.module,chunk 和 bundle 的区别是什么?2.filename 和 chunkFilename 的区别 版本区别 webpack 2x entry output loaders file-loader:把文件输出到一个文件夹中,在代码中通过相对 URL 去引用输出的文件 url-lo...
摘要:概述当创建了一个后,我们使用就可以启动项目了。这个命令实际上是启动了一段脚本,那这个脚本引用了哪些包呢让我们来一探究竟。实例检测本机版本是否符合需求的版本。链接概述这个包是用来处理命令行的参数输入的。设置检查范围的起始端口号。 概述 当vue-cli创建了一个vue-demo后,我们使用npm run serve就可以启动项目了。通过package.json中的serve命令我们可以看...
相信vue使用者对vue-cli都不会陌生,甚至可以说,很熟悉了,但对其webpack的配置可能知之甚少吧。 过完年回来后,我接手了公司的新项目。新项目是一个spa。很自然,我就想到了vue-cli脚手架了,当时研究一下它的webpack配置。于是,就有了其他的内容。 今天这篇文章,是在原来的基础上,增加了一些新版本的内容,但实质上变化不大。 说明 此仓库为vue-cli webpack的配置分析...
阅读 2888·2021-10-19 10:09
阅读 3097·2021-10-09 09:41
阅读 3347·2021-09-26 09:47
阅读 2616·2019-08-30 15:56
阅读 572·2019-08-29 17:04
阅读 957·2019-08-26 11:58
阅读 2487·2019-08-26 11:51
阅读 3302·2019-08-26 11:29