Angular 编译优化工具——Bundle Analyzer

webpack-bundle-analyzer 是什么 可以做什么

当我们需要分析打包文件dist里哪些资源可以进一步优化时,就可以使用包分析器插件webpack-bundle-analyzer
webpack-bundle-analyzer 可以让我们看到 Webpack进行打包,到底打了多少包,每个包有多大
NPM上的介绍是 使用交互式可缩放树图可视化 webpack 输出文件的大小

环境

$ ng version
     _                      _                 ____ _     ___
    / \   _ __   __ _ _   _| | __ _ _ __     / ___| |   |_ _|
   / △ \ | '_ \ / _` | | | | |/ _` | '__|   | |   | |    | |
  / ___ \| | | | (_| | |_| | | (_| | |      | |___| |___ | |
 /_/   \_\_| |_|\__, |\__,_|_|\__,_|_|       \____|_____|___|
                |___/
    

Angular CLI: 14.2.5
Node: 16.13.1
Package Manager: npm 8.1.2 
OS: darwin arm64

Angular: 
... 

Package                      Version
------------------------------------------------------
@angular-devkit/architect    0.1402.5 (cli-only)
@angular-devkit/core         14.2.5 (cli-only)
@angular-devkit/schematics   14.2.5 (cli-only)
@schematics/angular          14.2.5 (cli-only)

angular 中如何使用 webpack-bundle-analyzer

ng new bundleDemo   ### 创建一个 angular cli

cd bundleDemo

npm install --save-dev webpack-bundle-analyzer@4.4.2

npm install moment@2.29.1 lodash

在 app.component.ts 中引入这两个插件

import { Component, OnInit } from '@angular/core';
import * as moment from 'moment';
import * as _ from 'lodash';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
  ngOnInit(): void {
    const time = moment.utc();
    _.forEach([1,2,3,4,5,5,6,7,7], item => {
        console.log('[ item ] >', item)
    })
  }
}

在 package.json scripts 中添加

"build:stats": "ng build --stats-json"
"analyze": "webpack-bundle-analyzer dist/bundle-demo/stats.json"

执行 npm run build:stats && npm run analyze 打开分析表

webpack-bundle-analyzer 如何分析 bundle

从上图可以看出 dist 文件中最大的 文件是 moment lodash

  1. moment 会将插件内所有的语言打包进去
  2. lodash 虽然只用的一个方法,还是被整体打包

结论 如果插件没有按按需加载,会将整个插件打包到项目中

webpack-bundle- analyzer打包优化的可能性

优化方案

  1. 更换其他时间插件 例如 dayJs

  2. lodash 按需引入(通过按需引入的方式,lodash 缩小了500K

其他优化方案

同一个库存在多版本
使用 npm list packageName 查看当前包在这里项目里有多少个不同的版本 选其中一个最高版本升级即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用提到了angular-gettext,这是一款面向AngularJS应用程序的翻译工具,支持超过130种不同种类的语言。而引用则提到了Angular Fire,它是一套AngularJS代码捆绑方案,用于将Firebase后端与AngularJS应用程序相对接。这两个工具都可以用于AngularJS开发。此外,引用中提到了使用Grunt,Bower和Yo工具AngularJS中编码的项目。Grunt是一个JavaScript任务运行器,用于自动化项目的构建和测试;Bower是一个前端包管理器,用于管理项目的依赖;Yo是一个脚手架工具,用于生成项目的骨架代码。这些工具都可以作为AngularJS开发的辅助工具,用于提高开发效率和质量。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [前端开发:基于AngularJS开发的实用工具](https://blog.csdn.net/iqifenxia/article/details/122321340)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [NOS:用Angular JS开发6步购物车流程](https://download.csdn.net/download/weixin_42151599/18269436)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值