写点什么

webpack | 进阶用法 4:如何进行构建速度和体积分析

用户头像
梁龙先森
关注
发布于: 2021 年 02 月 03 日
webpack | 进阶用法4:如何进行构建速度和体积分析

webpack 构建速度和体积的优化,首先要能查看构建的统计信息、速度分析、体积分析,才能对症下药。下篇文章,再聊如何进行速度优化和进行体积优化策略。

一、构建的统计信息

方法一:使用 webpack 内置的 stats

:package.json 文件如下配置,运行命令行将会产生 stats.json 文件描述构建的详细信息

{	"scripts":{  	"build:stats":"webpack --env production --json > stats.json"  }	}
复制代码

方法二:在 node.js 中

const webpack = require('webpack')webpack(config,(err,stats)=>{	if(err){  	return console.error(err)  }  if(stats.hasErrors){    // 输出构建错误信息  	return console.log(stats.toString('error-only'))  }  // 输出构建信息  console.log(stats)})
复制代码

当然这里对于错误的输出,我们还可以这么配置,

// 仅展示部分代码{  plugins:[    ],  stats:'errors-only' // 只在发生错误时输出}
复制代码

这里 stats 的配置项有如下几种:

  • errors-only:只在发生错误时输出

  • minimal:只在发生错误或有新的编译时输出

  • none:没有输出

  • normal:标准输出

  • verbose:全部输出

只是这种方式的配置,当应用构建成功,命令行没有输出,因此我们通过插件来优化,配置如下:


const FriendlyErrorsWebpackPlugin=require('friendly-errors-webpack-plugin')
// 仅展示部分代码{ plugins:[ new FriendlyErrorsWebpackPlugin() ], stats:"none"}
复制代码

构建信息的输出,并不能分析构建速度问题所在,所有接下去看看如何进行速度分析。

二、速度分析

速度分析,采用插件:speed-measure-webpack-plugin,主要用于如下分析:

  1. 分析整个打包的总耗时

  2. 查看每个 loader 和 plugin 的耗时情况

用法如下:

const SpeedMeasurePlugin = require("speed-measure-webpack-plugin");
// webpack配置const webpackConfig = { entry:{}, plugins:[]}
const smpOptions = { 'disable':false , // 该插件是否不生效 'outputFormat':'human' , // 以哪种模式打印测量值 ... // 更详情配置,请前往查看插件文档}
const smp = new SpeedMeasurePlugin(smpOptions)// wepback运行此配置时,默认将耗时情况输出到控制台const smpWebpackConfig = smp.wrap(webpackConfig)
复制代码

输出效果如下:红色耗时最大。

三、体积分析

体积分析采用的是插件:webpack-bundle-analyzer,主要分析以下 2 点:

  1. 依赖的第三方库的文件大小

  2. 业务代码里的组件大小

用法如下:

const BundleAnalyzerPlugin = require('webpack-bundle-analyzer')
module.exports = { plugins:[ new BundleAnalyzerPlugin() ]}
复制代码

构建完成后会在端口展示如下:(加班太忙,网上找的输出图)

四、总结

至此完成了构建速度和体积的分析,下一章学习,如何优化构建速度和体积。


发布于: 2021 年 02 月 03 日阅读数: 24
用户头像

梁龙先森

关注

脚踏V8引擎的无情写作机器 2018.03.17 加入

还未添加个人简介

评论

发布
暂无评论
webpack | 进阶用法4:如何进行构建速度和体积分析