首先还是简单介绍一下 webpack-bundle-analyzer 是做什么的:

Visualize size of webpack output files with an interactive zoomable treemap.

一个很强大的用来优化打包之后文件提交的工具。

在老版本的脚手架里面已经多帮你配置好了,在 build/webpack.prod.conf.js 文件中:

判断是否配置了 bundleAnalyzerReport,如果配置了,加载 webpack-bundle-analyzer 工具包,调用了 BundleAnalyzerPlugin,最终还是 push 到 plugins 对象中:


if (config.build.bundleAnalyzerReport) {
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
webpackConfig.plugins.push(new BundleAnalyzerPlugin())
}

config/index.js 文件中:配置了 build 对象的 bundleAnalyzerReport


module.exports = {
build: {
bundleAnalyzerReport: process.env.npm_config_report
}
}

那在新版本里面,我们在 vue.config.js 中如何配置呢?

第一个想到的还是通过 chainWebpack 配置,再看看它的官方说明:

是一个函数,会接收一个基于 webpack-chain 的 ChainableConfig 实例。
允许对内部的 webpack 配置进行更细粒度的修改。


chainWebpack: config => {
// ...
}

然后是如何通过 config 生成一个 plugin

我们查看一下 webpack-chain 插件的 README.md,有如下一段:


config
.plugin(name)
.use(WebpackPlugin, args)

参照如上格式,有 2 个示例如下:


// Examples
config
.plugin('hot')
.use(webpack.HotModuleReplacementPlugin); config
.plugin('env')
.use(webpack.EnvironmentPlugin, ['NODE_ENV']);

所以,照着上面的模板,我们也很简单就写出来了:


config
.plugin('webpack-bundle-analyzer')
.use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)

但是还不够,我们需要加一些限制条件,类似老版本脚手架里面的:


if (process.env.npm_config_report) {
// ...
}

然后我们可以在 package.json 中增加 scripts:

key 是:analyz
value 是:npm_config_report=true npm run build


"analyz": "npm_config_report=true npm run build"

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

[Vue CLI 3] 配置 webpack-bundle-analyzer 插件的更多相关文章

  1. webpack & bundle analyzer

    webpack & bundle analyzer webpack bundle analyzer https://github.com/th0r/webpack-bundle-analyze ...

  2. vue cli 3 & webpack-merge & webpack 3 & bug

    vue cli 3 & webpack-merge & webpack & bug bug webpack-merge & bug webpack-merge ??? ...

  3. [Vue CLI 3] 配置解析之 indexPath

    在 vue.config.js 配置中有一个 indexPath 的配置,我们先看看它有什么用? 用来指定 index.html 最终生成的路径(相对于 outputDir) 先看看它的默认值:在文件 ...

  4. vue cli 构建的 webpack 项目设置多页面

    1. webpack-dev-server下的设置(npm run dev) ./build/webpack.dev.conf.js 中,修改 new HtmlWebpackPlugin ,一个页面一 ...

  5. [Vue CLI 3] 配置解析之 parallel

    官方文档中介绍过在 vue.config.js 文件中可以配置 parallel,作用如下: 是否为 Babel 或 TypeScript 使用 thread-loader. 该选项在系统的 CPU ...

  6. @vue/cli的配置知道多少-publicPath,outputDir,assetsDir,indexPath,filenameHashing,configureWebpack,productionSourceMap

    vue.config.js的简单介绍 vue.config.js 是一个可选的配置文件, 在项目的 (和 package.json 同级的) 根目录中存在这个文件. 默认情况没有这个文件需要我们手动去 ...

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

    大家还记得我们在老版本中,对于线上环境配置中会把所有的 css 多打成一个文件: 核心是使用了插件 extract-text-webpack-plugin,方式如下: 第一步都是加载插件 const ...

  8. Vue CLI 3 配置兼容IE10

    最近做了一个基于Vue的项目,需要兼容IE浏览器,目前实现了打包后可以在IE10以上运行,但是还不支持在运行时兼容IE10及以上. 安装依赖 yarn add --dev @babel/polyfil ...

  9. vue.js---利用vue cli脚手架工具+webpack创建项目遇到的坑

    1.Eslint js代码规范报错 WARNING Compiled with 2 warnings 10:43:26 ✘ http://eslint.org/docs/rules/quotes St ...

随机推荐

  1. pandas一些基本操作(DataFram和Series)_3

    import pandas as pd;import numpy as np#通过一维数组创建Chinese = np.array([89,87,86])print(Chinese)print(pd. ...

  2. 2018-10-31-win10-uwp-使用-asp-dotnet-core-做图床服务器客户端

    title author date CreateTime categories win10 uwp 使用 asp dotnet core 做图床服务器客户端 lindexi 2018-10-31 14 ...

  3. eclipse环境问题-java版本不兼容

    有时候虽然我们给项目配置的jdk版本.项目编译版本都一直,但是还是会报如下的错误: Description Resource Path Location Type Java compiler leve ...

  4. Java虚拟机系列(四)---查看GC日志

    这一节穿插一点如何在eclipse中配置并查看某个Java应用GC日志的知识点,我也是通过调研知道的,因为书中写的不是很详细,主要是为下一节做准备. 一.eclipse中配置GC 在eclipse中如 ...

  5. Jquery选择器总结一

    jquery 是javaScript框架,封装了js. 好处:使用方便,少代码多功能. 实现同一个功能的代码量少. 屏蔽浏览器差异. 简化ajax开发. 选择器 基本选择器 1. id选择器 $(&q ...

  6. VS2005+VTK读入点云文件

    使用VTK读入点云文件的基础代码: 头文件: 也许不是全部都用到,为了接下来得工程还是全部都包含进去了 #include "vtkRenderer.h" #include &quo ...

  7. java时间戳和PHP时间戳的转换问题

    由于精度不同,导致长度不一致,直接转换错误.  JAVA时间戳长度是13位,PHP时间戳长度是10位.主要最后三位的不同. 方法,截取前10位,substr($time,0,10);

  8. 树hash

    判断树的同构,采用树hash的方式. 树hash定义在有根树上.判断无根树同构的时候,可以比较重心为根的hash值或者比较每个点为根的hash值. h[x]表示x为根的子树的hash,g[x]表示x为 ...

  9. windows 2008 安装 apache + mysql + php

    下载准备 php : http://windows.php.net/downloads/releases/archives/ apache : https://www.apachehaus.com/c ...

  10. js数组操作方法

    数组的操作方法在js中可谓是诸子百家,各种某乱的方法让人眼花缭乱,有时候就会分不清什么是自带的什么是曾今写的api了 数组的增删 1 . push() , pop()  和 shift() unshi ...