Cómo utilizar el analizador de paquetes webpack para aplicaciones Angular

Introducción
La satisfacción del usuario se ve afectada por el rendimiento web, y este puede verse afectado por paquetes de gran tamaño. Cuando agregamos módulos de terceros a nuestros proyectos, cada una de las dependencias tiene sus propias dependencias que contribuyen al tamaño de un proyecto. Si no utilizamos toda la funcionalidad de estos módulos, están contribuyendo al tamaño de nuestro proyecto de manera innecesaria.
webpack Bundle Analyzer
es una herramienta que puede ayudar a identificar los módulos que se utilizan en nuestro proyecto y ofrecer información sobre qué módulos se pueden eliminar.
En este artículo, aprenderá cómo usar webpack Bundle Analyzer con Angular para analizar un proyecto y realizar cambios sensibles para reducir el tamaño del proyecto.
Prerrequisitos
Para completar este tutorial, necesitarás:
- Node.js instalado localmente, lo cual puedes hacer siguiendo Cómo instalar Node.js y crear un entorno de desarrollo local .
- Algunos conocimientos sobre la configuración de un proyecto Angular .
Este tutorial fue verificado con Node v16.2.0, npm
v7.18.1, @angular/core
v12.0.4 y webpack-bundle-analyzer
v4.4.2.
Paso 1: Configuración del proyecto
Para establecer una base común, crearemos una nueva aplicación Angular y agregaremos algunas dependencias.
Primero, use @angular/cli
para crear un nuevo proyecto:
- ng new angular-bundle-analyzer-example --routing=false --style=css --skip-tests
Luego, navegue hasta el directorio del proyecto recién creado:
- cd angular-bundle-analyzer-example
En este punto, podemos correr ng build
a determinar el tamaño inicial de nuestro proyecto.
Output| Initial Total | 170.14 kB
Este tutorial se basará en dos paquetes para visualizar los beneficios de webpack-bundle-analyzer
. Utilícelos npm
para instalar moment
y firebase
:
- npm install moment@2.29.1 firebase@8.6.8
Abra app.component.ts
e importe moment
en firebase
nuestro main.js
paquete:
src/app/app.component.ts
import { Component, OnInit } from '@angular/core';import * as moment from 'moment';import firebase from 'firebase';@Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css']})export class AppComponent implements OnInit { ngOnInit(): void { const time = moment.utc(); const firebaseConfig = {}; firebase.initializeApp(firebaseConfig); }}
Para evitar un error de compilación, también debemos eliminar el title
que se genera automáticamente con @angular/cli
en app.component.html
:
src/aplicación/aplicación.componente.html
span{{ title }} app is running!/span
En este punto, podemos correr ng build
a determinar el tamaño de nuestro paquete:
Output| Initial Total | 1.36 MB
Nuestro proyecto ha crecido de aproximadamente 170,14 kB a 1,36 MB. Deberíamos analizar esto para ver qué podemos hacer para reducirlo. Instalemos el webpack-bundle-analyzer
complemento:
- npm install --save-dev webpack-bundle-analyzer@4.4.2
Paso 2 — Construir constats.json
La CLI de Angular nos brinda la posibilidad de compilar de manera stats.json
inmediata. Esto nos permite pasar esto a nuestro analizador de paquetes y comenzar el proceso.
Podemos agregar un nuevo script para package.json
agregar esta funcionalidad:
paquete.json
"scripts": { "ng": "ng", "start": "ng serve", "build": "ng build", "build:stats": "ng build --stats-json", "watch": "ng build --watch --configuration development", "test": "ng test"},
Ahora podemos ejecutar el siguiente comando:
- npm run build:stats
Este comando generará stats.json
un archivo en el directorio del proyecto dist
.
Paso 3: Análisis del paquete
Podemos hacer otro script
que se ejecute webpack-bundle-analyzer
con el stats.json
:
paquete.json
"scripts": { "ng": "ng", "start": "ng serve", "build": "ng build", "build:stats": "ng build --stats-json", "analyze": "webpack-bundle-analyzer dist/angular-bundle-analyzer-example/stats.json", "watch": "ng build --watch --configuration development", "test": "ng test"},
Luego, ejecute el analizador con el siguiente comando:
- npm run analyze
Este comando iniciará webpack-bundle-analyzer
:
OutputWebpack Bundle Analyzer is started at http://127.0.0.1:8888Use Ctrl+C to close it
Y el análisis se visualizará en un navegador web:
¡Vaya! Este análisis indica que deberíamos hacer un mejor trabajo para eliminar los artículos no utilizados de nuestro paquete.
Paso 4: Aplicar cambios
Podemos revisarlo app.component.ts
y modificarlo para importar solo firebase
desde firebase/app
:
src/app/app.component.ts
import { Component, OnInit } from '@angular/core';import * as moment from 'moment';import firebase from 'firebase/app';@Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.scss']})export class AppComponent implements OnInit { ngOnInit(): void { const time = moment.utc(); const firebaseConfig = {}; firebase.initializeApp(firebaseConfig); }}
Guarde los cambios y ejecute el siguiente comando:
- npm run build:stats
Luego, ejecute el siguiente comando:
- npm run analyze
Y el análisis se visualizará en un navegador web:
El tamaño del proyecto ha cambiado de 1,36 MB a 563,13 kB.
Conclusión
En este artículo, aprendió a usar webpack Bundle Analyzer con Angular para analizar un proyecto y realizar cambios sensibles para reducir el tamaño del proyecto.
Continúe su aprendizaje sobre cómo reducir aún más el tamaño del proyecto con una configuración de webpack personalizada .
Deja una respuesta