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

Introducción

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: Configuración del proyecto
  • Paso 2 — Construir constats.json
  • Paso 3: Análisis del paquete
  • Paso 4: Aplicar cambios
  • Conclusió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 Analyzeres 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, npmv7.18.1, @angular/corev12.0.4 y webpack-bundle-analyzerv4.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/clipara crear un nuevo proyecto:

    1. ng new angular-bundle-analyzer-example --routing=false --style=css --skip-tests

    Luego, navegue hasta el directorio del proyecto recién creado:

    1. cd angular-bundle-analyzer-example

    En este punto, podemos correr ng builda 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 npmpara instalar momenty firebase:

    1. npm install moment@2.29.1 firebase@8.6.8

    Abra app.component.tse importe momenten firebasenuestro main.jspaquete:

    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 titleque se genera automáticamente con @angular/clien app.component.html:

    src/aplicación/aplicación.componente.html

    span{{ title }} app is running!/span

    En este punto, podemos correr ng builda 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-analyzercomplemento:

    1. 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.jsoninmediata. Esto nos permite pasar esto a nuestro analizador de paquetes y comenzar el proceso.

    Podemos agregar un nuevo script para package.jsonagregar 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:

    1. npm run build:stats

    Este comando generará stats.jsonun archivo en el directorio del proyecto dist.

    Paso 3: Análisis del paquete

    Podemos hacer otro scriptque se ejecute webpack-bundle-analyzercon 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:

    1. 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.tsy modificarlo para importar solo firebasedesde 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:

    1. npm run build:stats

    Luego, ejecute el siguiente comando:

    1. 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 .

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion