consdata.com
Blog techniczny Blog biznesowy Dział HR
EN
CommonJS

Czy wiesz, jak analizować i optymalizować zależności w bundle?

author Aleksander Burzec
16 czerwca 2026

Przy budowaniu projektu Angularowego można natrafić na poniższy błąd:

Application bundle generation complete. [28.317 seconds]

▲ [WARNING] bundle initial exceeded maximum budget. Budget 2.00 MB was not met by 1.89 MB with a total of 3.89 MB.

Rozpoczynamy śledztwo od zbudowania aplikacji z flagą statsJson. Ustawiamy ją w angular.json/project.json lub uruchamiamy z nią build.

Po zbudowaniu aplikacji w ten sposób w katalogu wynikowym pojawi się dodatkowy wygenerowany plik - stats.json.

W zależności od tego, czy używamy esbuild, czy webpack, należy użyć odpowiedniego narzędzia:

  • esbuild-visualizer
  • webpack-bundle-analyzer

Po otwarciu pliku można zobaczyć poniższy ekran:

Interfejs narzędzia do analizy rozmiaru bundle'a JavaScript

Przyjrzyjmy się w takim razie plikowi, który zajmuje sporo miejsca. W naszym przypadku będzie to lodash.js. Przed zmianami wyglądał tak:

Analiza rozmiaru i importów biblioteki lodash w bundle'u JavaScript

Jest to spowodowane tym, że przez użycie niepoprawnego importu w plikach importowana jest cała biblioteka, co powoduje załadowanie całej zależności.

import {uniqWith, isEqual} from 'lodash';
import lodash from 'lodash';

Możemy to zoptymalizować na dwa sposoby:

  1. (Common JS) Zawężanie importu

    Należy zawęzić import do elementów, które są używane:

     import uniqWith from 'lodash/uniqWith';
     import isEqual from 'lodash/isEqual';
     import unset from 'lodash/unset';
    

    po zmianach:

    Zredukowany rozmiar biblioteki lodash w narzędziu do analizy bundle'a po zastosowaniu selektywnych importów

    z ~75KB na ~21KB, czyli prawie 4 krotna optymalizacja bundle dla wybranej zależności!

  2. (ESM) Korzystanie z odpowiedniej zależności

    Zamiast korzystać z zależności AMD/Common JS, można zaimportować zależność modułową (ES). Lodash udostępnia taką wersję: lodash-es

    Wtedy import wygląda tak:

     import {uniqWith, isEqual, unset} from 'lodash-es';
    

    Tree shaking sprawia, że ładowane są tylko używane zależności, zmniejszając przy tym rozmiar bundle’a.

Przydatne linki

  • esbuild-visualizer
  • webpack-bundle-analyzer
  • Lodash
Najnowsze wpisy

  • Czy wiesz, jak analizować i optymalizować zależności w bundle?
  • Czy wiesz, jak działa mechanizm uploadu plików w Springu?
  • Czy wiesz, jak stworzyć klikalną kartę (Card component) zgodnie z WCAG?
Dołącz do nas

  • SENIOR FULLSTACK DEVELOPER (JAVA + ANGULAR) Poznań (hybrydowo) lub zdalnie UoP 14 900 - 20 590 PLN brutto
    B2B 19 680 - 27 220 PLN netto
  • REGULAR FULLSTACK DEVELOPER (JAVA + ANGULAR) Poznań (hybrydowo) lub zdalnie UoP 11 300 - 15 900 PLN brutto
    B2B 14 950 - 21 000 PLN netto
  • ZOBACZ WSZYSTKIE OGŁOSZENIA

Podobne wpisy

post-image
spring boot

Czy wiesz, jak działa mechanizm uploadu plików w Springu?

Poznaj, jak w Springu działa upload plików, które parametry multipart warto ustawić i jak bezpiecznie przechowywać pliki po zakończeniu żądania.

author
Bartosz Pietrowiak 22 maj 2026
post-image
angular

Czy wiesz, jak stworzyć klikalną kartę (Card component) zgodnie z WCAG?

Budowa karty, która jest w całości klikalna, a jednocześnie zawiera w sobie dodatkowe akcje (jak przycisk „Ulubione”), to jedno z częstych wyzwań UX/UI.

author
Mariusz Bartosik 13 maj 2026
post-image
angular

Czy wiesz, że Angular 21 rozszerza API formularzy o Signal Forms?

Wraz z publikacją Angulara w wersji 21 opracowano nowy system definicji formularzy za pomocą sygnałów.

author
Wojciech Kulczak 24 kwi 2026
Dołącz do nas

  • SENIOR FULLSTACK DEVELOPER (JAVA + ANGULAR) Poznań (hybrydowo) lub zdalnie UoP 14 900 - 20 590 PLN brutto
    B2B 19 680 - 27 220 PLN netto
  • REGULAR FULLSTACK DEVELOPER (JAVA + ANGULAR) Poznań (hybrydowo) lub zdalnie UoP 11 300 - 15 900 PLN brutto
    B2B 14 950 - 21 000 PLN netto
  • ZOBACZ WSZYSTKIE OGŁOSZENIA
consdata.com
  • Kontakt

    • sales@consdata.com
    • +48 61 41 51 000

  • Biuro

    • K9Office
      Krysiewicza 9/14
      61-825 Poznań
      Polska

  • Rozwiązania

    • Eximee
    • Kouncil
  • Blog Dołącz do nas
Copyright © 2024 Consdata. All rights reserved. Privacy Policy & Cookies
Chcemy używać plików cookie oraz skryptów podmiotów trzecich do polepszania funkcjonowania tej strony Zgadzam się