当前位置: 首页 > news >正文

webpack5 之 优化效率工具 ( 进度条、速度分析 、打包后提交分析)

目录

  • 1:webpack5 之 优化效率工具 进度条
    • 方式1
      • package.json
      • webpack.base.js
      • 效果
    • 方式2与3 ( 推荐 方式2 )
      • package.json
      • webpack.base.js
      • 效果
  • 2:webpack5 之 优化效率工具 速度分析
    • package.json
    • webpack.dev.js
    • npm run dev 效果
  • 3:webpack5 之 优化效率工具 打包后提交分析
    • package.json
    • webpack.pro.js
    • 打包后体积分析 ( npm run build效果 自动开启一个网站 )

1:webpack5 之 优化效率工具 进度条

方式1

package.json

  "devDependencies": {
    "progress-bar-webpack-plugin": "^2.1.0"
  },

webpack.base.js

const path = require('path')
// 进度条
const ProgressBarPlugin = require('progress-bar-webpack-plugin')
module.exports = {
  entry: {
    main: './src/main.js'
  },
  output: {
    publicPath: '',
    path: path.resolve(__dirname, '../dist'),
    filename: 'js/[name]_[contenthash:6].js',
  },
  plugins: [
    // 进度条
    new ProgressBarPlugin()
  ]
}

效果

在这里插入图片描述

方式2与3 ( 推荐 方式2 )

package.json

  "devDependencies": {
    "webpackbar": "^5.0.2"
  },

webpack.base.js

const path = require('path')

// 进度条 方式1
// const ProgressBarPlugin = require('progress-bar-webpack-plugin')
// 方式2
// const {
//   ProgressPlugin
// } = require("webpack")
// 方式3
const WebpackBar = require('webpackbar');

module.exports = {
  entry: {
    main: './src/main.js'
  },
  output: {
    publicPath: '',
    path: path.resolve(__dirname, '../dist'),
    filename: 'js/[name]_[contenthash:6].js',
  },
  plugins: [
    // 进度条 方式1
    // new ProgressBarPlugin()
    // 方式2
    // new ProgressPlugin({
    //   activeModules: true, // 默认false,显示活动模块计数和一个活动模块正在进行消息。
    //   entries: true, // 默认true,显示正在进行的条目计数消息。
    //   modules: false, // 默认true,显示正在进行的模块计数消息。
    //   modulesCount: 5000, // 默认5000,开始时的最小模块数。PS:modules启用属性时生效。
    //   profile: false, // 默认false,告诉ProgressPlugin为进度步骤收集配置文件数据。
    //   dependencies: false, // 默认true,显示正在进行的依赖项计数消息。
    //   dependenciesCount: 10000, // 默认10000,开始时的最小依赖项计数。PS:dependencies启用属性时生效。
    // })
    // 方式3
    new WebpackBar({
      // color: "#85d", // 默认green,进度条颜色支持HEX
      basic: false, // 默认true,启用一个简单的日志报告器
      profile: false, // 默认false,启用探查器。
    })
  ]
}

效果

  • 方式2
    在这里插入图片描述
    在这里插入图片描述

2:webpack5 之 优化效率工具 速度分析

package.json

  "devDependencies": {
    "speed-measure-webpack-plugin": "^1.5.0"
  },

webpack.dev.js

const merge = require('webpack-merge')
const baseConfig = require('./webpack.base');
// 编译速度分析
const SpeedMeasurePlugin = require("speed-measure-webpack-plugin");
const smp = new SpeedMeasurePlugin();
const devPlugingConfig = smp.wrap({

})
const devConfig = {
  mode: 'development',
  devtool: 'eval-cheap-module-source-map', //开发环境配置 定位错误根源
  // dev缓存
  cache: {
    type: 'memory'
  },
  devServer: {
    port: '3001', // 默认是 8080
    hot: true,
    compress: true, // 是否启用 gzip 压缩
    proxy: {
      '/api': {
        target: 'http://0.0.0.0:80',
        pathRewrite: {
          '/api': '',
        },
      },
    },
  }
}
module.exports = merge(baseConfig, devConfig, devPlugingConfig)

npm run dev 效果

在这里插入图片描述
在这里插入图片描述

3:webpack5 之 优化效率工具 打包后提交分析

package.json

  "devDependencies": {
    "webpack-bundle-analyzer": "^4.6.1"
  },

webpack.pro.js

const path = require('path')
const merge = require('webpack-merge');
const baseConfig = require('./webpack.base');
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; // 打包后 体积分析

const proConfig = {
  mode: 'production',
  devtool: 'hidden-source-map',
  cache: {
    type: 'filesystem',
    buildDependencies: {
      config: [__filename]
    }
  },
  plugins: [
    // 打包体积分析
    new BundleAnalyzerPlugin()
  ]

}

module.exports = merge(baseConfig, proConfig)

打包后体积分析 ( npm run build效果 自动开启一个网站 )

在这里插入图片描述

相关文章:

  • WTG Windows系统安装到U盘/移动硬盘
  • java在线影院系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  • Illegal character in query at index 222
  • js利用split分割截取---1:1(整理)
  • 个人要做量化怎样才能获得交易接口?
  • 2.jQuery对象
  • golang里面关于map[string]interface{}取值问题
  • java在线问答平台计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  • 【面试题】Callable使用
  • element的表格中添加复制文字操作
  • 测试左移?测试右移?测试人员往哪移?
  • 中国美妆工具行业市场投资战略规划分析报告
  • 中国钨金属行业市场投资战略规划分析报告
  • 全球与中国显像系统行业发展规划及投资商机研究报告2022-2028年
  • 温敏性N-异丙基丙烯酰胺(NIPA)和pH敏感性丙烯酸(AA)接枝纳米聚苯乙烯微球相关研究
  • 自己简单写的 事件订阅机制
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • 2017前端实习生面试总结
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • PHP那些事儿
  • STAR法则
  • ViewService——一种保证客户端与服务端同步的方法
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 初识MongoDB分片
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 对超线程几个不同角度的解释
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 如何在GitHub上创建个人博客
  • 算法系列——算法入门之递归分而治之思想的实现
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 微服务核心架构梳理
  • 原生 js 实现移动端 Touch 滑动反弹
  • ​低代码平台的核心价值与优势
  • #《AI中文版》V3 第 1 章 概述
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #控制台大学课堂点名问题_课堂随机点名
  • #每日一题合集#牛客JZ23-JZ33
  • (1)(1.11) SiK Radio v2(一)
  • (day6) 319. 灯泡开关
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (转)Google的Objective-C编码规范
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • [1525]字符统计2 (哈希)SDUT
  • [C#] 基于 yield 语句的迭代器逻辑懒执行
  • [docker] Docker的私有仓库部署——Harbor
  • [Go WebSocket] 多房间的聊天室(五)用多个小锁代替大锁,提高效率
  • [JavaEE系列] wait(等待) 和 notify(唤醒)