资讯专栏INFORMATION COLUMN

[Vue CLI 3] 配置解析之 css.extract

zxhaaa / 2005人阅读

摘要:大家还记得我们在老版本中,对于线上环境配置中会把所有的多打成一个文件核心是使用了插件,方式如下第一步都是加载插件这个插件的描述如下然后配置如下省去了相关的配置一般配置来保证最终生成的文件名我们可以预先用看看最终生成的配置

大家还记得我们在老版本中,对于线上环境配置中会把所有的 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 原创合集] 你要的这里都有

    摘要:慢慢地,关于的原创学习文章已经写了多篇了会一直放出来,目前篇,因此做一个合集,献给那些对新版本脚手架使用和背后设计感兴趣的同学,都是一步一步去看源码,也给官方提了几次,合进去了几个原创不易,欢迎大家互相转发,期望大家一起快速过度到版本目录 慢慢地,关于 Vue CLI 3 的原创学习文章已经写了 20 多篇了(会一直放出来,目前 23 篇), 因此做一个合集,献给那些对新版本脚手架使用...

    phpmatt 评论0 收藏0
  • webpack使用记录

    容易混淆概念解析 读这篇文章理清下面概念 webpack 中那些最易混淆的 5 个知识点 1.module,chunk 和 bundle 的区别是什么?2.filename 和 chunkFilename 的区别 版本区别 webpack 2x entry output loaders file-loader:把文件输出到一个文件夹中,在代码中通过相对 URL 去引用输出的文件 url-lo...

    Sike 评论0 收藏0
  • vue-cli系列vue-cli自身引用了哪些包?持续更新中……

    摘要:概述当创建了一个后,我们使用就可以启动项目了。这个命令实际上是启动了一段脚本,那这个脚本引用了哪些包呢让我们来一探究竟。实例检测本机版本是否符合需求的版本。链接概述这个包是用来处理命令行的参数输入的。设置检查范围的起始端口号。 概述 当vue-cli创建了一个vue-demo后,我们使用npm run serve就可以启动项目了。通过package.json中的serve命令我们可以看...

    LiuRhoRamen 评论0 收藏0
  • vue-cli webpack配置分析

    相信vue使用者对vue-cli都不会陌生,甚至可以说,很熟悉了,但对其webpack的配置可能知之甚少吧。 过完年回来后,我接手了公司的新项目。新项目是一个spa。很自然,我就想到了vue-cli脚手架了,当时研究一下它的webpack配置。于是,就有了其他的内容。 今天这篇文章,是在原来的基础上,增加了一些新版本的内容,但实质上变化不大。 说明 此仓库为vue-cli webpack的配置分析...

    suemi 评论0 收藏0

发表评论

0条评论

zxhaaa

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<