Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ESBUILD code splitting is way worse than webpack #26622

Closed
1 task done
montella1507 opened this issue Dec 8, 2023 · 11 comments
Closed
1 task done

ESBUILD code splitting is way worse than webpack #26622

montella1507 opened this issue Dec 8, 2023 · 11 comments

Comments

@montella1507
Copy link

montella1507 commented Dec 8, 2023

Command

build

Is this a regression?

  • Yes, this behavior used to work in the previous version

The previous version in which this bug was not present was

Angular 16/17 - Webpack build

Description

We have medium size application which is developed with code splitting in mind.

For the instance:

  • 1 icon per file (svg-to-ts)
  • lazy loaded components (import(), @defer(), our own "dynamic-component" with level of indirection etc)
  • lot of secondary entry points.

STATS file with @angular-devkit/build-angular:browser:
stats.json.zip

As you can see - as an example, icons are "spread" across almost all lazy-loade chunks + 1 chunk with "widespread" icons:
image

68kB stat size.
image


✔ Browser application bundle generation complete.
✔ Copying assets complete.
✔ Index html generation complete.
✔ Service worker generation complete.

Initial Chunk Files           | Names                                                                                  |  Raw Size | Estimated Transfer Size
main.f95b1fa8a910fe00.js      | main                                                                                   | 419.81 kB |               112.80 kB
styles.8bc3b1f5af0e76cd.css   | styles                                                                                 | 131.06 kB |                18.83 kB
polyfills.e6606e65156243d0.js | polyfills                                                                              |  33.88 kB |                11.01 kB
runtime.815439d4c9d1a112.js   | runtime                                                                                |   8.84 kB |                 3.99 kB

                              | Initial Total                                                                          | 593.60 kB |               146.63 kB

Lazy Chunk Files              | Names                                                                                  |  Raw Size | Estimated Transfer Size
4691.e8499c35cb06ddcd.js      | portal-content                                                                         | 646.20 kB |               146.89 kB
8177.0369bdf08fc882cd.js      | portal-content                                                                         | 608.62 kB |                82.94 kB
3185.c27b821124b8fd8e.js      | portal-dashboard                                                                       | 241.26 kB |                52.60 kB
9974.560a320d4c28d15f.js      | portal-content                                                                         | 155.47 kB |                31.19 kB
2876.15706edab984fe15.js      | components-contact-detail-contact-detail-component                                     | 128.62 kB |                23.55 kB
8604.327495659cfa35c8.js      | portal-content                                                                         | 126.77 kB |                27.51 kB
9350.5e37d2b24048cc4d.js      | components-import-import-component                                                     | 120.48 kB |                25.22 kB
9470.0bae4ec6cef71325.js      | components-layout-layout-component                                                     | 119.62 kB |                25.51 kB
554.df73ce1f15ec564e.js       | portal-content                                                                         | 106.57 kB |                22.82 kB
3924.38cf4bf39ef4897a.js      | components-contact-create-contact-create-component                                     |  95.19 kB |                22.45 kB
9521.b039062baafe72d6.js      | components-contact-lists-contact-lists-component                                       |  93.26 kB |                22.52 kB
5565.2091cf813a37a0ce.js      | components-graphic-identity-edit-graphic-identity-edit-component                       |  84.78 kB |                13.06 kB
7358.c5b34f99b6bef01c.js      | components-editor-editor-component                                                     |  82.72 kB |                19.61 kB
4868.c9e3cebfee000854.js      | portal-content                                                                         |  81.26 kB |                17.42 kB
8343.8197814e5864fbe2.js      | components-company-user-list-company-user-list-component                               |  79.72 kB |                18.37 kB
9141.a90c0d7fa8e7adfe.js      | components-template-list-template-list-component                                       |  79.26 kB |                13.60 kB
2500.a548262a392634c9.js      | components-two-factor-two-factor-component                                             |  72.69 kB |                17.56 kB
3387.491d3dced7f5c721.js      | portal-content                                                                         |  72.35 kB |                24.85 kB
2825.9a27fa3dd3e32e15.js      | components-available-icons-available-icons-component                                   |  65.81 kB |                17.71 kB
7741.4c4cb12cb28a2329.js      | components-default-settings-default-settings-component                                 |  64.31 kB | [[39m22m               18.87 kB
396.b35ea151de0f6c81.js       | angular-animations-browser                                                             |  62.53 kB |                16.52 kB
8537.9511d6bbd8803103.js      | portal-content                                                                         |  52.96 kB |                 9.64 kB
8541.fcac78d270a3e0e8.js      | components-export-new-export-new-component                                             |  51.49 kB |                12.09 kB
8145.3eeb74b1c6dae0c8.js      | portal-content                                                                         |  51.42 kB |                12.43 kB
7537.dd67c07ddbc8d8ce.js      | components-sender-list-sender-list-component                                           |  51.41 kB |                 9.99 kB
386.00580f7cb5d7edbb.js       | components-custom-field-edit-custom-field-edit-component                               |  50.83 kB |                12.94 kB
4553.90851d547bdcd1d6.js      | components-general-info-general-info-component                                         |  50.52 kB |                14.09 kB
4939.098ac1ebf947a840.js      | components-webtracking-webtracking-component                                           |  50.14 kB |                14.55 kB
3626.84ca3999afaf5db6.js      | components-notification-list-notification-list-component                               |  49.43 kB | [22[39mm               13.30 kB
9086.205ebf56c94e89cd.js      | portal-dashboard                                                                       |  48.95 kB |                11.74 kB
6225.a63bd91c95717745.js      | portal-content                                                                         |  48.87 kB |                10.68 kB
4665.884aa767502f0dd4.js      | components-purpose-edit-purpose-edit-component                                         |  48.70 kB |                13.70 kB
3550.0215dc769d16f896.js      | portal-content                                                                         |  47.68 kB |                12.30 kB
3101.b85b9146d726230b.js      | components-purpose-new-purpose-new-component                                           |  46.33 kB |                12.88 kB
5997.5ed561b0249ab6c8.js      | components-api-api-component                                                           |  45.77 kB |                12.45 kB
2870.0bc825911f6c6aba.js      | components-company-label-company-label-component                                       |  45.71 kB |                12.51 kB
3406.5acd9450c974c169.js      | components-promo-code-promo-code-component                                             |  45.34 kB |                11.50 kB
4652.11766a116207cded.js      | components-scenarios-scenarios-component                                               |  44.46 kB |                12.06 kB
7283.0c86ebea2126adcf.js      | components-feed-pairing-feed-pairing-component                                         |  44.37 kB |                13.91 kB
8630.3a21c31e9d4229b1.js      | components-facebook-audience-facebook-audience-component                               |  43.28 kB |                11.17 kB
5239.7ff9fd645538e9c9.js      | portal-content                                                                         |  42.81 kB |                11.25 kB
5827.7275e156c21eb31d.js      | components-one-time-campaign-one-time-campaign-component                               |  42.70 kB |                10.85 kB
7522.80b683fc9a75589f.js      | components-feed-edit-feed-edit-component                                               |  41.42 kB |                12.14 kB
9901.24a63bdf81408be7.js      | components-app-setting-app-setting-component                                           |  40.46 kB |                11.62 kB
4243.be17a464040a01e5.js      | components-integration-zapier-integration-zapier-component                             |  40.28 kB |                 8.54 kB
7367.b12b23641426bfa0.js      | components-contact-list-detail-contact-list-detail-component                           |  39.93 kB |                10.77 kB
3060.b4605c538710a59e.js      | portal-content                                                                         |  39.20 kB |                 8.68 kB
1761.a6e006bdc01d29ed.js      | components-general-info-general-info-component                                         |  38.23 kB |                10.79 kB
5091.96e9efbb8030bf39.js      | components-available-forms-available-forms-component                                   |  38.22 kB |                 6.43 kB
4918.bed1b7f455242d3c.js      | components-device-list-device-list-component                                           |  37.54 kB |                10.33 kB
4890.a2f80b0d6fa6b938.js      | components-sklik-sklik-component                                                       |  37.41 kB |                 9.87 kB
9275.09d098254aa01172.js      | components-custom-field-list-custom-field-list-component                               |  36.58 kB |                10.58 kB
3651.c3589dd4aa788551.js      | components-scenarios-scenarios-component                                               |  36.47 kB |                11.25 kB
4096.48539c27b6862c23.js      | components-import-export-import-export-component                                       |  36.34 kB |                 9.66 kB
9473.e9b2521d1cdf0040.js      | components-zapier-zapier-component                                                     |  36.24 kB |                10.33 kB
4118.e8403c899cad056c.js      | portal-content                                                                         |  36.10 kB |                 8.70 kB
5784.3d9140e735f7be00.js      | components-make-make-component                                                         |  35.47 kB |                10.17 kB
6609.bd0b76b3714d7419.js      | components-purpose-list-purpose-list-component                                         |  34.93 kB |                10.37 kB
5822.9b299f3f4fa9ec3d.js      | components-shoptet-shoptet-component                                                   |  34.28 kB |                 8.98 kB
common.9947babefb17070b.js    | common                                                                                 |  34.16 kB |                 7.47 kB
7020.138f224865421578.js      | components-available-buttons-available-buttons-component                               |  33.69 kB |                 5.34 kB
9352.37b9d3879de8506a.js      | components-available-others-available-others-component                                 |  33.48 kB |                 8.53 kB
9606.47586a658d506f24.js      | components-password-change-password-change-component                                   |  33.18 kB |                 9.68 kB
1876.49b51d64c4e290f4.js      | components-settings-dashboard-settings-dashboard-component                             |  32.95 kB |                 9.46 kB
5868.6f81391d0c256f1e.js      | components-company-user-activity-list-company-user-activity-list-component             |  32.94 kB |                 9.30 kB
9456.4324e110af152c8b.js      | components-export-detail-export-detail-component                                       |  32.22 kB |                 7.11 kB
3574.a5c9652475cf23c1.js      | components-customer-invoices-customer-invoices-component                               |  31.39 kB |                 8.88 kB
2542.7b99fe388e9fd958.js      | portal-shared-ui-toasts-ui                                                             |  31.06 kB |                 6.34 kB
8396.a9c928c44da5a67e.js      | components-available-tabs-available-tabs-component                                     |  30.21 kB |                 6.20 kB
686.c42e6052c459a9e3.js       | components-dmarc-dmarc-component                                                       |  29.94 kB |                 8.58 kB
8067.3c16f339ef2d548a.js      | components-smart-campaigns-smart-campaigns-component                                   |  29.92 kB |                 8.58 kB
3439.fb76ba9e33c59003.js      | components-available-accordion-available-accordion-component                           |  29.64 kB |                 6.30 kB
4834.320904dcb35d0a45.js      | components-sms-transactions-sms-transactions-component                                 |  29.51 kB |                 8.41 kB
3939.d0e42cf464143a26.js      | components-subscription-billing-information-subscription-billing-information-component |  29.47 kB |                 8.41 kB
6572.1eed76d51a9f6f0c.js      | components-tarif-tarif-component                                                       |  29.46 kB |                 8.37 kB
6789.363b21110210326e.js      | components-login-login-component                                                       |  29.45 kB |                 7.53 kB
5143.ff5736eeaf98984d.js      | components-dns-dns-component                                                           |  29.04 kB |                 8.75 kB
1196.110ee228748992ca.js      | components-available-inputs-available-inputs-component                                 |  28.36 kB |                 6.68 kB
9134.c4d79cf5fef1b68f.js      | components-graphic-identity-list-graphic-identity-list-component                       |  27.69 kB |                 7.05 kB
9382.02a4bcb4c51b265c.js      | components-integration-facebook-audience-integration-facebook-audience-component       |  27.47 kB |                 7.40 kB
507.ea05a1928be11f82.js       | components-sign-up-step-1-sign-up-step-1-component                                     |  27.40 kB |                 9.05 kB
8692.8d2e10466d9d1019.js      | portal-shared-ui-public-layout                                                         |  27.18 kB |                 6.72 kB
450.a83e1500cce6bd37.js       | components-available-skeletons-available-skeletons-component                           |  26.93 kB |                 5.39 kB
3671.2bfaa5beefc78f95.js      | components-available-charts-available-charts-component                                 |  26.78 kB |                 4.87 kB
3714.71930ae4b8db68c4.js      | portal-content                                                                         |  26.74 kB |                 6.11 kB
2098.3332340911dd07e8.js      | components-one-time-campaign-list-one-time-campaign-list-component                     |  25.99 kB |                 6.88 kB
4397.595c33fd9ae2a042.js      | components-contacts-contacts-component                                                 |  25.10 kB |                 7.08 kB
1667.be1106581671a58c.js      | components-html-editor-edit-html-editor-edit-component                                 |  24.38 kB |                 5.72 kB
9575.e63436ae2cadce64.js      | components-sender-list-sender-list-component                                           |  23.42 kB |                 6.61 kB
7915.037b17a35221da6f.js      | components-company-user-request-company-user-request-component                         |  23.26 kB |                 7.38 kB
3112.d1e95ea24882c6f0.js      | components-available-toasts-available-toasts-component                                 |  23.08 kB |                 4.49 kB
5053.30aae1e65b65bf18.js      | components-available-forms-available-forms-component                                   |  22.44 kB |                 5.03 kB
1307.2c9d5f879fbc7037.js      | components-available-modals-available-modals-component                                 |  22.26 kB |                 6.76 kB
7550.663c8594ecc2a2f1.js      | components-contact-list-detail-contact-list-detail-component                           |  22.21 kB |                 6.06 kB
1308.eac0378776bc7806.js      | components-layout-layout-component                                                     |  21.99 kB |                 6.85 kB
7716.115c563e0ffbaaa5.js      | components-available-icons-available-icons-component                                   |  21.98 kB |                 6.50 kB
4490.f77b4043c5445cee.js      | components-available-tooltips-available-tooltips-component                             |  21.96 kB |                 4.11 kB
3905.d247540e15681be4.js      | components-users-users-component                                                       |  21.85 kB |                 6.01 kB
6254.f4957a14fecb3735.js      | components-available-ganalytics-available-ganalytics-component                         |  20.75 kB |                 3.89 kB
455.4b0ef3a9faa27f73.js       | components-contact-detail-contact-detail-component                                     |  19.70 kB |                 6.24 kB
3394.e539fcdda6d46768.js      | components-email-statistics-list-email-statistics-list-component                       |  19.64 kB |                 5.43 kB
7033.60eea4d5f2380161.js      | papaparse                                                                              |  18.81 kB |                 6.18 kB
6335.067dbe692b4a84df.js      | components-contact-list-detail-contact-list-detail-component                           |  18.78 kB |                 5.22 kB
8506.cbec894ae13bd095.js      | components-about-about-component                                                       |  17.89 kB |                 4.81 kB
7517.a4dc0266ee0570e4.js      | components-feed-list-feed-list-component                                               |  17.83 kB |                 5.84 kB
5487.d3d4b92a3b5e233b.js      | components-layout-layout-component                                                     |  17.65 kB |                 5.69 kB
1399.e0f5da7bd971bdf4.js      | components-api-api-component                                                           |  17.46 kB |                 5.76 kB
486.051f46c400f5150f.js       | components-contact-list-detail-contact-list-detail-component                           |  17.21 kB |                 4.68 kB
6702.b4a7b8fbeed24fe4.js      | components-contact-list-contact-list-component                                         |  17.02 kB |                 4.47 kB
2677.28b4b5927fc1f6b2.js      | components-webhook-webhook-component                                                   |  16.95 kB |                 [39m[96m4.43 kB
6720.f94c4d482845e311.js      | components-sms-sms-component                                                           |  16.93 kB |                 4.43 kB
1493.c7f1cf532e904618.js      | components-workshops-dashboard-workshops-dashboard-component                           |  16.89 kB |                 4.44 kB
2474.cf82015f4da447eb.js      | components-help-dashboard-help-dashboard-component                                     |  16.88 kB |                 4.43 kB
9334.e2dc9ae129c8434d.js      | components-template-list-template-list-component                                       |  16.08 kB |                 5.07 kB
5464.8e8d94f60751c1e6.js      | components-feed-edit-feed-edit-component                                               |  15.76 kB |                 5.09 kB
8228.42685cda242a33e6.js      | components-webtracking-webtracking-component                                           |  15.51 kB |                 4.25 kB
1480.a9a47e3b0da4394e.js      | components-sign-up-step-2-sign-up-step-2-component                                     |  15.38 kB |                 5.07 kB
8544.1c30cdb26f015720.js      | fuse-js                                                                                |  15.28 kB |                 4.77 kB
980.3a0fd099d353cf07.js       | components-available-forms-available-forms-component                                   |  15.04 kB |                 [9[39m6m4.34 kB
9923.532661b4f37b853b.js      | portal-content                                                                         |  15.02 kB |                 3.91 kB
4881.002baace2be9f029.js      | components-sender-confirmation-sender-confirmation-component                           |  13.79 kB |                 4.40 kB
4163.b55b4f038fd54eb6.js      | components-import-detail-import-detail-component                                       |  13.67 kB |                 3.84 kB
2725.5f444e9f878742ab.js      | portal-content                                                                         |  13.64 kB |                 3.64 kB
112.2b8ca7a64501b2cb.js       | components-available-components-available-components-component                         |  13.55 kB |                 3.48 kB
5548.c910128af949e27c.js      | components-breadcrumb-fuzzy-view-breadcrumb-fuzzy-view-component                       |  13.48 kB |                 3.75 kB
7839.9cb3c1067b27ceca.js      | components-not-found-not-found-component                                               |  13.39 kB |                 4.29 kB
5726.f8706b3dece44b2c.js      | components-logout-logout-component                                                     |  13.30 kB |                 4.39 kB
1778.97eb5c099b29a114.js      | components-available-forms-available-forms-component                                   |  12.73 kB |                 4.43 kB
4138.9eeae78d4c880152.js      | components-sign-up-step-1-success-sign-up-step-1-success-component                     |  12.67 kB |                 4.00 kB
3642.a5eb7a15216ff915.js      | components-reset-password-step-1-success-reset-password-step-1-success-component       |  12.58 kB |                 3.96 kB
4513.fd8a7eb73b4070c1.js      | components-custom-field-edit-custom-field-edit-component                               |  12.50 kB |                 4.01 kB
4564.631e27cc054472ce.js      | components-product-feed-item-list-product-feed-item-list-component                     |  12.41 kB |                 3.57 kB
7249.fb80d6b4b4ef7521.js      | components-maintenance-maintenance-component                                           |  12.22 kB |                 3.82 kB
1036.1f5666546092ee8b.js      | components-contact-settings-contact-settings-component                                 |  11.75 kB |                 4.08 kB
8986.d6a37b9ef240e88d.js      | components-double-opt-in-double-opt-in-component                                       |  11.66 kB |                 3.21 kB
7197.3551aaa25f2f82a4.js      | portal-subscribers                                                                     |  11.32 kB |                 3.19 kB
7307.52bbbe67418e4e9a.js      | components-promo-code-promo-code-component                                             |  11.13 kB |                 3.47 kB
8546.0ad7f860637b3197.js      | components-web-form-list-web-form-list-component                                       |  11.07 kB |                 3.47 kB
2167.9ac7e121695ec5a8.js      | components-article-feed-item-list-article-feed-item-list-component                     |  11.06 kB |                 3.35 kB
4133.bb108267174516c0.js      | components-available-forms-available-forms-component                                   |  11.04 kB |                 3.24 kB
9159.7be0a53530a6dc82.js      | components-footers-footers-component                                                   |  10.94 kB |                 4.04 kB
4287.1c76655f9d6b7f52.js      | components-reset-password-step-2-reset-password-step-2-component                       |  10.86 kB |                 3.59 kB
4588.56a031d2c20f6973.js      | components-integration-dashboard-integration-dashboard-component                       |  10.55 kB |                 3.63 kB
7553.2df6d0fec00aeaa5.js      | portal-automation                                                                      |  10.04 kB |                 3.11 kB
9784.5891709a18334e35.js      | components-landing-page-list-landing-page-list-component                               |   9.98 kB |                 3.29 kB
9262.8e8ac894aa14f884.js      | components-generic-json-feed-item-list-generic-json-feed-item-list-component           |   9.74 kB |                 3.12 kB
1998.e993369f022812e0.js      | components-settings-dashboard-settings-dashboard-component                             |   9.62 kB |                 2.91 kB
8011.1c48b9b7f87a5ffe.js      | portal-content                                                                         |   9.18 kB |                 3.07 kB
194.be2446029bbca353.js       | components-reset-password-step-1-reset-password-step-1-component                       |   8.19 kB |                 3.20 kB
214.1f21013e476fa575.js       | portal-shared-ui-public-layout                                                         |   8.19 kB |                 2.77 kB
1449.0ef8d55c823bdfb3.js      | components-custom-field-edit-custom-field-edit-component                               |   7.94 kB |                 2.85 kB
9674.53180a647a8c0061.js      | components-custom-field-new-custom-field-new-component                                 |   7.88 kB |                 2.80 kB
705.b2bd3d1f6f2477b3.js       | components-company-settings-dashboard-company-settings-dashboard-component             |   7.86 kB |                 2.45 kB
8482.bd70814a7a10683a.js      | components-user-dashboard-user-dashboard-component                                     |   7.56 kB |                 2.40 kB
2907.04df358523a9a5b5.js      | components-data-sources-data-sources-component                                         |   7.44 kB |                 2.34 kB
1097.656d94bfedd77830.js      | components-mailing-dashboard-mailing-dashboard-component                               |   7.42 kB |                 2.37 kB
975.32d53130060d990d.js       | components-subscription-subscription-component                                         |   7.18 kB |                 2.29 kB
7374.2d25bc69a3cde3d7.js      | components-graphic-identity-list-graphic-identity-list-component                       |   6.78 kB |                 2.64 kB
4978.e2c4ae3b835b6a02.js      | portal-shared-ui-file-manager                                                          |   6.72 kB |                 2.05 kB
5634.d7517c08ecfbff11.js      | components-assigned-promo-code-assigned-promo-code-component                           |   6.44 kB |                 2.56 kB
9055.552da08889d6cc86.js      | components-contact-detail-contact-detail-component                                     |   6.40 kB |                 1.36 kB
6930.6bc90269df34a4aa.js      | components-web-form-edit-web-form-edit-component                                       |   6.15 kB |                 2.22 kB
6133.d11ca9ee94c4e43f.js      | components-web-form-new-web-form-new-component                                         |   6.12 kB |                 2.21 kB
2824.cac968b12b40987d.js      | components-one-time-campaign-edit-one-time-campaign-edit-component                     |   5.99 kB |                 1.89 kB[39m[39m
2809.9e63ef74061442f2.js      | file-manager-conflict-file-manager-conflict-component                                  |   5.67 kB |                 2.03 kB
2589.44013489ceafd5f2.js      | components-one-time-campaign-one-time-campaign-component                               |   5.14 kB |                 1.59 kB
6785.7ead644d69f80f4c.js      | portal-content                                                                         |   5.09 kB |                 1.39 kB
8656.6940ba2a04fd2398.js      | portal-editor                                                                          |   4.25 kB |                 1.36 kB
9872.dae3a6f4b1e8854f.js      | portal-content                                                                         |   4.22 kB |                 1.26 kB
233.1d0db83069bdc3f8.js       | components-smart-editor-edit-smart-editor-edit-component                               |   4.09 kB |                 1.52 kB
1619.6ef53b4417b87ca3.js      | components-available-security-available-security-component                             |   3.93 kB |                 1.15 kB
2405.5db9b87c14512552.js      | portal-content                                                                         |   3.80 kB |               961 bytes
8409.f979f6acf2b9cb8e.js      | components-survey-survey-component                                                     |   3.48 kB |                 1.28 kB[3[39m9m
1827.866038dbd6b02447.js      | components-file-manager-page-file-manager-page-component                               |   3.37 kB |                 1.24 kB
7180.80f59b137102fbfb.js      | components-feed-new-feed-new-component                                                 |   3.05 kB |                 1.47 kB
5617.36bf099a3e75eb77.js      | components-available-typography-available-typography-component                         |   2.80 kB |               903 bytes
6066.5261a0ce0793742d.js      | file-manager-move-file-manager-move-component                                          |   2.74 kB |                 1.25 kB
858.86f2e818f734f76d.js       | portal-available-components                                                            |   2.61 kB |               586 bytes
8365.481a0b2d444e3b35.js      | components-scenarios-editor-scenarios-editor-component                                 |   1.96 kB |               986 bytes
9229.f0aba5aa3a0c6d65.js      | editor-element-image-selection-editor-element-image-selection-component                |   1.91 kB |               908 bytes
1129.a219365390eeed71.js      | components-scenarios-analytics-scenarios-analytics-component                           |   1.81 kB |               915 bytes
9254.547a16bddd068122.js      | data-sources-data-sources-routes                                                       |   1.36 kB |               430 bytes
9534.9384e1facc02bc3e.js      | user-user-routes                                                                       |   1.34 kB |               399 bytes
3011.191c834f60202866.js      | components-email-statistics-email-statistics-component                                 |   1.33 kB |               731 bytes
8861.53c1f0607eb6f493.js      | feed-feed-routes                                                                       |   1.27 kB |               383 bytes
5934.c6f089ef902dbec6.js      | portal-settings                                                                        |   1.25 kB |               444 bytes
3867.30a7b16732a0d341.js      | reset-password-reset-password-routes                                                   |   1.11 kB |               316 bytes
5085.63c22fb678e992a9.js      | sign-up-sign-up-routes                                                                 |   1.10 kB |               321 bytes
7747.1da4bd07b4946117.js      | subscription-subscription-routes                                                       |   1.09 kB |               345 bytes
1534.6816aef7de9c681d.js      | company-company-routes                                                                 |   1.04 kB |               381 bytes
6622.618bcb763e19d07d.js      | portal-stats                                                                           | 960 bytes |               337 bytes[[39m0m
8990.25aaa807e9a32635.js      | one-time-campaign-one-time-campaign-routes                                             | 893 bytes |               277 bytes
9081.5199053029e34247.js      | contact-field-custom-field-routes                                                      | 851 bytes |               288 bytes
8549.9490965d5d56a7d6.js      | mailing-mailing-routes                                                                 | 845 bytes |               344 bytes
1563.a370053e6125097f.js      | integration-integration-routes                                                         | 789 bytes |               327 bytes
4715.8d1ba4779c6b9fa0.js      | purpose-purpose-routes                                                                 | 775 bytes |               272 bytes
7793.18886c1aec9b1419.js      | contact-lists-contact-lists-routes                                                     | 669 bytes |               262 bytes
7291.06f29e7fa2d8ad51.js      | import-export-import-export-routes                                                     | 666 bytes |               298 bytes
1895.4e5ce4c72b6df899.js      | promo-code-promo-code-routes                                                           | 641 bytes |               263 bytes
3820.8e1ecd31e65210d5.js      | import-import-routes                                                                   | 615 bytes |               232 bytes
5032.816a2c39d9ae7c53.js      | portal-account                                                                         | 584 bytes |               259 bytes
5624.a49355e81aa8a018.js      | contacts-contacts-routes                                                               | 563 bytes |               273 bytes
3742.84ea07bf7239ee47.js      | export-new-export-new-routes                                                           | 536 bytes |               252 bytes
8277.9e999e8505d66a37.js      | contact-settings-contact-settings-routes                                               | 527 bytes |               257 bytes
2951.aa2f2aeac083dd4c.js      | web-form-web-form-routes                                                               | 517 bytes |               256 bytes
1106.c5263055462166ac.js      | login-login-routes                                                                     | 504 bytes |               233 bytes
497.279bddf4bd6b816a.js       | maintenance-maintanence-routes                                                         | 493 bytes |               225 bytes
5569.b6b2b297e8a66ffd.js      | not-found-not-found-routes                                                             | 489 bytes |               227 bytes
1468.2c70056b05006e05.js      | logout-logout-routes                                                                   | 486 bytes |               228 bytes
[39m[0m6067.dc020517f325d007.js      | portal-campaigns                                                                       | 462 bytes |               255 bytes
6953.515b3102b70bd385.js      | graphic-identity-graphic-itentity-routes                                               | 462 bytes |               236 bytes
2932.6f890a1f9649c098.js      | contact-detail-contact-detail-routes                                                   | 449 bytes |               241 bytes
3144.194d77dc183a4439.js      | sender-sender-routes                                                                   | 430 bytes |               248 bytes
3512.f0602783fd3c59f9.js      | generic-json-feed-item-list-generic-json-feed-item-list-routes                         | 408 bytes |               243 bytes
7950.1ed8ca1d312dd2c1.js      | portal-admin                                                                           | 405 bytes |               241 bytes
3140.007c66bc25cb245c.js      | product-feed-item-list-product-feed-item-list-routes                                   | 400 bytes |               238 bytes
8550.86935301a3240b67.js      | article-feed-item-list-article-feed-item-list-routes                                   | 400 bytes |               240 bytes
110.612942675c407037.js       | company-user-request-company-user-request-routes                                       | 392 bytes |               231 bytes
[0[39mm349.b72ef1f0dd7bc2b2.js       | company-user-activity-company-user-activity-routes                                     | 390 bytes |               229 bytes
9716.28bff5debd3126d3.js      | contact-new-contact-new-routes                                                         | 388 bytes |               225 bytes
7592.a7e2a6c9cec10776.js      | company-user-company-user-routes                                                       | 385 bytes |               233 bytes
1578.7135633baccc68e5.js      | template-edit-template-edit-routes                                                     | 381 bytes |               208 bytes
4663.3546de1fd3f4dcde.js      | template-template-routes                                                               | 379 bytes |               216 bytes
8576.d98de9607eb61681.js      | sender-confirmation-sender-confirmation-routes                                         | 376 bytes |               231 bytes
4558.16bbd21f476dd2c0.js      | notification-notification-routes                                                       | 373 bytes |               223 bytes
8542.c049cc8b852128e3.js      | email-email-routes                                                                     | 367 bytes |               224 bytes
679.2d92c271de9e9d56.js       | device-device-routes                                                                   | 360 bytes |               217 bytes
[39m[92m1104.a1eceeb3f209624a.js      | portal-public                                                                          | 354 bytes |               205 bytes
1159.ebdb2126dff718ca.js      | portal-workshops                                                                       | 352 bytes |               218 bytes
3376.59605b304233245f.js      | label-label-routes                                                                     | 349 bytes |               213 bytes
449.8124a7bfde547bf6.js       | default-settings-default-settings-routes                                               | 344 bytes |               207 bytes
5413.98799b98ba53c857.js      | portal-help                                                                            | 342 bytes |               215 bytes
4160.317a66bd6a949a79.js      | facebook-audience-facebook-audience-routes                                             | 337 bytes |               202 bytes
878.57881c9b55b4775a.js       | general-info-general-info-routes                                                       | 326 bytes |               203 bytes
6643.037fafb03072f8a8.js      | landing-page-landing-page-routes                                                       | 321 bytes |               207 bytes
1256.d285a717e913de62.js      | shoptet-shoptet-routes                                                                 | 319 bytes |               201 bytes
[9[39m2m5374.7bc5755c48b60647.js      | general-info-general-info-routes                                                       | 317 bytes |               198 bytes
4066.47bf9c976dc3f58e.js      | sklik-sklik-routes                                                                     | 315 bytes |               200 bytes
7053.4c11cbb5ae08091a.js      | import-detail-import-detail-routes                                                     | 309 bytes |               199 bytes
7980.baee534526221fd0.js      | dns-dns-routes                                                                         | 302 bytes |               197 bytes
2817.b0175216594e5f11.js      | zapier-zapier-routes                                                                   | 298 bytes |               195 bytes
5812.f82530c7deb11514.js      | make-make-routes                                                                       | 294 bytes |               191 bytes
1731.3cdd18af366d8172.js      | footers-footers-routes                                                                 | 270 bytes |               182 bytes
4574.96a3735ef3da64c5.js      | email-statistics-email-statistics-routes                                               | 270 bytes |               177 bytes

Build at: 2023-12-08T13:28:52.852Z - Hash: b54d86ab3926fc30 - Time: 39339ms

But with ESBuild - stats file:
esbuild-stats.json

As you can see, all icons are packed together to 1 single chunk - and it has 190kb
image

Difference?
Webpack:

  • when i go to "contact-detail" route, it loads only several icons, only which are actually used in that route (like 7kB)

ESBuild:

  • when i go to "contact-detail" route, it loads entire 190kB chunk, only several icons are actually used...
  • "initial load chunks" are > 150kb larger

Way we import the icons:
image

Index file + structur:
image

Minimal Reproduction

  1. Probably, it will be enough to create Library with constants. 1 constant per file.
  2. Create lazy loaded routes
  3. Use ConstantA only in RouteA, ConstantB only in RouteB etc...

= in Webpack, ConstantA will land only in LazyChunkRouteA, LazyChunkRouteB etc.
= in ESBuild, All constants will be in standalone lazy loaded chunk...

Exception or Error

No response

Your Environment

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

Angular CLI: 17.0.5
Node: 20.9.0
Package Manager: yarn 1.22.19
OS: darwin arm64

Angular: 17.0.5
... animations, cli, common, compiler, compiler-cli, core, forms
... language-service, localize, platform-browser
... platform-browser-dynamic, router, service-worker

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1700.5
@angular-devkit/build-angular   17.0.5
@angular-devkit/core            17.0.5
@angular-devkit/schematics      17.0.5
@angular/cdk                    17.0.1
@schematics/angular             17.0.5
ng-packagr                      17.0.2
rxjs                            7.8.1
typescript                      5.2.2
webpack                         5.89.0
zone.js                         0.14.2

Anything else relevant?

Latest NX monorepo, full standalone, buildable library, secondary entry points

@montella1507
Copy link
Author

missing ES Build output



Initial Chunk Files   | Names                                      |   Raw Size | Estimated Transfer Size
chunk-HQT7VTID.js     | -                                          |  204.87 kB |                59.10 kB
styles-4GQAP6DM.css   | styles                                     |  130.74 kB |                18.79 kB
chunk-WET2A5FQ.js     | -                                          |   84.98 kB |                21.36 kB
chunk-DAH5P5NQ.js     | -                                          |   69.71 kB |                13.77 kB
chunk-L4ZLBJ5W.js     | -                                          |   36.86 kB |                11.22 kB
polyfills-BIJJPXW7.js | polyfills                                  |   36.23 kB |                11.92 kB
main-64BGOEV6.js      | main                                       |   29.79 kB |                 7.12 kB
chunk-BJUFSC4D.js     | -                                          |   26.42 kB |                 6.09 kB
chunk-XPGWH6GT.js     | -                                          |   25.46 kB |                 7.51 kB
chunk-2N774TWP.js     | -                                          |   16.11 kB |                 4.71 kB
chunk-JQNSTRPM.js     | -                                          |   10.20 kB |                 3.07 kB
chunk-ZZ4AMYX2.js     | -                                          |    5.54 kB |                 1.85 kB
chunk-3FB4KGJ6.js     | -                                          |    5.44 kB |                 1.58 kB
chunk-SB2W6WJ4.js     | -                                          |    3.26 kB |                 1.15 kB
chunk-FMXBPIEL.js     | -                                          |    3.10 kB |                 1.28 kB
chunk-MON7YFGF.js     | -                                          |    1.31 kB |               576 bytes
chunk-Y7KJY42H.js     | -                                          |    1.11 kB |               388 bytes
chunk-KJZTOQ3M.js     | -                                          |    1.09 kB |               471 bytes
chunk-7WMX32X6.js     | -                                          |  731 bytes |               731 bytes
chunk-YRSIELYB.js     | -                                          |  346 bytes |               346 bytes
chunk-I5W6SDJ6.js     | -                                          |  255 bytes |               255 bytes

                      | Initial Total                              |  693.53 kB |               173.23 kB

Lazy Chunk Files      | Names                                      |   Raw Size | Estimated Transfer Size
chunk-IDPTFI6Q.js     | -                                          |  591.72 kB |               116.29 kB
chunk-6Q6ZAMVD.js     | -                                          |  312.97 kB |                43.30 kB
chunk-PNWYZPCH.js     | -                                          |  256.46 kB |                53.92 kB
chunk-A33H7LUP.js     | -                                          |  244.16 kB |                32.08 kB
chunk-LYIXJX5C.js     | -                                          |  191.48 kB |                46.71 kB
chunk-QC6XOWVG.js     | -                                          |  114.04 kB |                25.08 kB
chunk-COYOC4Q3.js     | contact-detail-component                   |  105.44 kB |                18.82 kB
chunk-P3OIVXY5.js     | -                                          |   94.12 kB |                18.93 kB
chunk-YLIBKBAY.js     | -                                          |   86.29 kB |                18.36 kB
chunk-OS3WBU5Q.js     | layout-component                           |   75.06 kB |                16.66 kB
chunk-IH3YPOPU.js     | editor-component                           |   73.60 kB |                17.87 kB
chunk-ITVE2M4N.js     | -                                          |   72.58 kB |                15.35 kB
chunk-UJTUPC3E.js     | -                                          |   [[39m96m70.58 kB |                24.92 kB
chunk-SGTTYYCB.js     | graphic-identity-edit-component            |   67.79 kB |                 9.30 kB
chunk-SOUHXYDR.js     | import-component                           |   63.76 kB |                12.69 kB
chunk-EJCA45P4.js     | browser                                    |   62.30 kB |                16.54 kB
chunk-ZR7OQOXU.js     | -                                          |   58.55 kB |                 9.70 kB
chunk-F65QYTT6.js     | -                                          |   47.52 kB |                10.56 kB
chunk-YSLK2FWX.js     | -                                          |   46.90 kB |                10.31 kB
chunk-LYBKFV7D.js     | -                                          |   41.25 kB |                10.43 kB
chunk-YMJ2XGAL.js     | -                                          |   40.64 kB |                 9.43 kB
chunk-FYEZT6AY.js     | company-user-list-component                |   35.14 kB |                 7.44 kB
chunk-GPX2QWTK.js     | export-new-component                       |   31.87 kB |                 6.62 kB
chunk-W2KCVKTL.js     | -                                          |   29.41 kB |                 5.00 kB
chunk-3I6RIBRN.js     | contact-list-detail-component              |   27.11 kB |                 7.52 kB
chunk-5WCF7DSH.js     | -                                          |   25.18 kB |                 7.34 kB
chunk-A3MGCAGM.js     | contact-create-component                   |   24.08 kB |                 6.69 kB
chunk-TOAMQVH7.js     | -                                          |   23.59 kB |                 5.89 kB
chunk-EFP2KE3U.js     | -                                          |   22.54 kB |                 5.85 kB
chunk-MYBQU2FQ.js     | -                                          |   22.09 kB |                 5.09 kB
chunk-7LMFDE6O.js     | index                                      |   21.56 kB |                 5.54 kB
chunk-NHU4SQ72.js     | login-component                            |   19.06 kB |                 4.55 kB
chunk-F344HRTP.js     | papaparse-min                              |   19.00 kB |                 6.25 kB
chunk-XDR2S2SG.js     | sender-list-component                      |   18.60 kB |                 5.25 kB
chunk-2F6ADMZC.js     | -                                          |   18.38 kB |                 4.03 kB
chunk-OEWFIPQO.js     | html-editor-edit-component                 |   18.24 kB |                 4.03 kB
chunk-6Q2VBPXG.js     | facebook-audience-component                |   18.20 kB |                 4.91 kB
chunk-J7L7DM4G.js[39[39mm     | -                                          |   17.29 kB |                 3.93 kB
chunk-5HZV2SPP.js     | two-factor-component                       |   17.16 kB |                 4.93 kB
chunk-6YCN62W2.js     | -                                          |   16.88 kB |                 4.13 kB
chunk-ZLDMNIIM.js     | api-component                              |   16.79 kB |                 5.23 kB
chunk-JQAUYEVX.js     | -                                          |   16.66 kB |                 4.20 kB
chunk-FU743TME.js     | available-inputs-component                 |   16.25 kB |                 4.06 kB
chunk-WFHS7LLR.js     | -                                          |   16.22 kB |                 4.70 kB
chunk-JTKY2WNQ.js     | fuse-esm                                   |   15.31 kB |                 4.81 kB
chunk-SRVKCKSA.js     | contacts-component                         |   15.27 kB |                 4.65 kB
chunk-FKNHOSR3.js     | webtracking-component                      |   14.82 kB |                 4.69 kB
chunk-C7KHEP4S.js     | shoptet-component                          |   14.37 kB |                 4.31 kB
chunk-QXSYPVED.js     | -                                          |   14.31 kB |                 2.14 kB
chunk-2CP5HBVT.js     | -                                          |   14.05 kB |                 3.49 kB
chunk-NOZ7YCEE.js     | sklik-component                            |   14.05 kB |                 4.21 kB
chunk-XM2VV2OM.js     | template-list-component                    |   12.95 kB |                 4.08 kB
chunk-IJJ6WECC.js     | customer-invoices-component                |   12.56 kB |                 3.97 kB
chunk-EE26M5FI.js     | -                                          |   12.48 kB |                 3.41 kB
chunk-BJQ4VX27.js     | default-settings-component                 |   12.41 kB |                 4.39 kB
chunk-JD24BRB2.js     | -                                          |   11.95 kB |                 4.21 kB
chunk-G3ZWLFUX.js     | promo-code-component                       |   11.44 kB |                 3.62 kB
chunk-HQPLNOT6.js     | scenarios-component                        |   11.27 kB |                 3.52 kB
chunk-RFIDLYFC.js     | feed-list-component                        |   11.25 kB |                 3.59 kB
chunk-2NRO2ZSV.js     | feed-pairing-component                     |   11.09 kB |                 3.91 kB
chunk-TW33IAMJ.js     | import-export-component                    |   11.01 kB |                 3.42 kB
chunk-H3MQ4FAI.js     | company-label-component                    |   10.73 kB[[39m39m |                 3.30 kB
chunk-EDPIWLWK.js     | -                                          |   10.36 kB |                 2.53 kB
chunk-H2Y4OAH2.js     | -                                          |   10.17 kB |                 2.72 kB
chunk-AYDRH3JX.js     | sign-up-step-1-component                   |   10.17 kB |                 3.72 kB
chunk-CHZAR3TH.js     | -                                          |    9.77 kB |                 2.05 kB
chunk-M3ANI5ER.js     | -                                          |    9.71 kB |                 2.70 kB
chunk-WZNJCSSC.js     | sign-up-step-2-component                   |    9.41 kB |                 3.33 kB
chunk-K743UJSL.js     | general-info-component                     |    8.92 kB |                 2.81 kB
chunk-BQ7ZX7WE.js     | notification-list-component                |    8.64 kB |                 2.83 kB
chunk-BONZATWE.js     | purpose-edit-component                     |    8.64 kB |                 3.19 kB
chunk-DFQABOB5.js     | -                                          |    8.60 kB |                 2.17 kB
chunk-WXK3ANLU.js     | web-form-list-component                    |    8.55 kB |                 2.84 kB
chunk-JDFPN5OY.js     | footers-component                          |    8.42 kB |                 3.00 kB[39m[39m
chunk-7BOGWFS5.js     | available-forms-component                  |    8.17 kB |                 2.30 kB
chunk-6KTHICE2.js     | -                                          |    8.15 kB |                 2.38 kB
chunk-2HQJ3Z5T.js     | custom-field-edit-component                |    8.14 kB |                 2.97 kB
chunk-MDTJHETS.js     | custom-field-new-component                 |    8.10 kB |                 2.93 kB
chunk-5JX256GL.js     | -                                          |    8.09 kB |                 2.45 kB
chunk-2K5EI3NS.js     | company-user-request-component             |    7.99 kB |                 2.88 kB
chunk-EAJYHFBC.js     | purpose-new-component                      |    7.92 kB |                 2.95 kB
chunk-CGUYPYYN.js     | -                                          |    7.83 kB |                 1.84 kB
chunk-SAZULG4Z.js     | index                                      |    7.82 kB |                 2.20 kB
chunk-AEEM5DG6.js     | landing-page-list-component                |    7.57 kB |                 2.68 kB
chunk-ZJTA6Y3V.js     | purpose-list-component                     |    7.55 kB |                 2.77 kB
chunk-VFLOM2TN.js     | feed-edit-component                        |    7.40 kB |                 2.62 kB
chunk-WIUDAEXM.js     | [39m[22m-                                          |    7.23 kB |                 2.06 kB
chunk-BQDEQ5GM.js     | custom-field-list-component                |    7.20 kB |                 2.69 kB
chunk-KI5WKSJP.js     | assigned-promo-code-component              |    7.17 kB |                 2.72 kB
chunk-ATV67RCS.js     | -                                          |    7.02 kB |                 2.41 kB
chunk-26IQNUNG.js     | graphic-identity-list-component            |    6.93 kB |                 2.69 kB
chunk-HE4VEPPE.js     | one-time-campaign-edit-component           |    6.77 kB |                 2.09 kB
chunk-FKDV2XBG.js     | -                                          |    6.76 kB |                 2.17 kB
chunk-ZUXRMRAX.js     | general-info-component                     |    6.66 kB |                 2.40 kB
chunk-664FO5S3.js     | -                                          |    6.66 kB |                 1.95 kB
chunk-2U2LJUSL.js     | -                                          |    6.63 kB |                 2.33 kB
chunk-NE5FM7HO.js     | -                                          |    6.47 kB |                 2.01 kB
chunk-JQVQTP6M.js     | reset-password-step-2-component            |    6.29 kB |                 2.35 kB
chunk-VSY2E5JH.js     | available-charts-component                 |    6.29 kB |                 2.11 kB
chunk-V3LRRVW6.js     | -                                          |    6.26 kB |                 2.10 kB
chunk-QBCRPUCW.js     | -                                          |    6.10 kB |                 2.02 kB
chunk-FJEAFLVC.js     | product-feed-item-list-component           |    5.98 kB |                 2.02 kB
chunk-BZLK7BFJ.js     | one-time-campaign-component                |    5.95 kB |                 1.78 kB
chunk-U242N7NS.js     | -                                          |    5.83 kB |                 1.74 kB
chunk-QNUAK4Z3.js     | one-time-campaign-list-component           |    5.69 kB |                 1.97 kB
chunk-B3C3QN5I.js     | -                                          |    5.68 kB |                 1.25 kB
chunk-V3G3S3DL.js     | -                                          |    5.56 kB |                 1.77 kB
chunk-ESG6OKKN.js     | contact-lists-component                    |    5.49 kB |                 2.03 kB
chunk-WQNIAG47.js     | -                                          |    5.48 kB |                 1.78 kB
chunk-YNBCYLAP.js     | index                                      |    5.35 kB |                 1.52 kB
chunk-ZNLQ3DMS.js     | -                                          |    5.32 kB | [2[39m2m                1.71 kB
chunk-OLPOCEM6.js     | zapier-component                           |    5.15 kB |                 1.80 kB
chunk-QFMSTNHS.js     | -                                          |    5.07 kB |                 1.35 kB
chunk-GBICQUU7.js     | export-detail-component                    |    5.06 kB |                 1.96 kB
chunk-X5CUIYO5.js     | device-list-component                      |    5.05 kB |                 1.84 kB
chunk-C6X6JNDP.js     | dns-component                              |    5.03 kB |                 2.09 kB
chunk-5XJKX2BE.js     | -                                          |    5.02 kB |                 1.92 kB
chunk-33WYMUTQ.js     | file-manager-conflict-component            |    4.96 kB |                 1.81 kB
chunk-D7HGZ4YR.js     | integration-facebook-audience-component    |    4.92 kB |                 1.83 kB
chunk-45XAO3XS.js     | integration-zapier-component               |    4.89 kB |                 1.70 kB
chunk-KPW3KIAB.js     | settings-dashboard-component               |    4.82 kB |                 1.61 kB
chunk-YVEWCUE4.js     | users-component                            |    4.82 kB |                 1.74 kB
chunk-JNRJ2IAS.js     | -                                          |    4.80 kB |                 1.71 kB
chunk-THC5AWQP.js     | article-feed-item-list-component           |    4.73 kB |                 1.80 kB
chunk-W4CGN2C4.js     | contact-settings-component                 |    4.53 kB |                 1.80 kB
chunk-4XCCKT2W.js     | integration-dashboard-component            |    4.51 kB |                 1.77 kB
chunk-3G37AOGW.js     | make-component                             |    4.38 kB |                 1.64 kB
chunk-OUZUTFP7.js     | available-others-component                 |    4.30 kB |                 1.52 kB
chunk-WAQV4J52.js     | -                                          |    4.26 kB |                 1.54 kB
chunk-V2D2Y3CU.js     | web-form-edit-component                    |    4.26 kB |                 1.73 kB
chunk-AICRKDTH.js     | web-form-new-component                     |    4.22 kB |                 1.73 kB
chunk-5MAXD5ER.js     | password-change-component                  |    4.22 kB |                 1.72 kB
chunk-I3O6AEXS.js     | -                                          |    4.21 kB |                 1.29 kB
chunk-KL353VYT.js     | reset-password-step-1-component            |    4.01 kB |                 1.67 kB
chunk-VEDXGEX7.js     | feed-new-component                         |    3.75 kB |                 1.61 kB
chunk-7P3VVJ3N.js     | available-modals-component                 |    3.71 kB |                 1.42 kB
chunk-63OUGBKI.js     | generic-json-feed-item-list-component      |    3.67 kB |                 1.51 kB
chunk-ZW57BKUJ.js     | sign-up-step-1-success-component           |    3.67 kB |                 1.44 kB
chunk-MQHUGZGL.js     | available-icons-component                  |    3.66 kB |                 1.47 kB
chunk-5WO4BOAD.js     | -                                          |    3.66 kB |               887 bytes
chunk-PJKEFSLW.js     | reset-password-step-1-success-component    |    3.57 kB |                 1.40 kB
chunk-K56OMPAM.js     | not-found-component                        |    3.56 kB |                 1.50 kB
chunk-DKAZGV27.js     | -                                          |    3.56 kB |                 1.29 kB
chunk-56HUP54C.js     | company-user-activity-list-component       |    3.55 kB |                 1.35 kB
chunk-VNWQHHYH.js     | sender-confirmation-component              |    3.52 kB |                 1.54 kB
chunk-NYRB5P2P.js     | index                                      |    3.52 kB |                 1.13 kB
chunk-VBMMF6OI.js     | -                                          |    3.46 kB |                 1.37 kB
chunk-7MNTJEPP.js     | -                                          | [22[39mm   3.10 kB |                 1.07 kB
chunk-SPMSOTL7.js     | company-settings-dashboard-component       |    3.06 kB |                 1.15 kB
chunk-DLGLIHGG.js     | logout-component                           |    3.03 kB |                 1.31 kB
chunk-JYC2G5VE.js     | -                                          |    2.94 kB |                 1.04 kB
chunk-BKTX3MTM.js     | file-manager-move-component                |    2.90 kB |                 1.27 kB
chunk-OCH7M7D2.js     | available-accordion-component              |    2.88 kB |                 1.28 kB
chunk-EZGTJOHP.js     | available-security-component               |    2.86 kB |                 1.01 kB
chunk-KDRXM3AY.js     | available-buttons-component                |    2.85 kB |               980 bytes
chunk-SFL2KXUV.js     | -                                          |    2.80 kB |                 1.08 kB
chunk-2THBBZCJ.js     | editor-element-image-selection-component   |    2.78 kB |                 1.07 kB
chunk-LGHZ4HUL.js     | available-toasts-component                 |    2.77 kB |                 1.14 kB
chunk-X2JAM53G.js     | available-skeletons-component              |    2.76 kB |                 1.05 kB
chunk-PSCSA6YR.js     | app-setting-component                      |    2.73 kB |                 1.24 kB
chunk-XOP73YGE.js     | user-dashboard-component                   |    2.73 kB |                 1.10 kB
chunk-EOPHL436.js     | email-statistics-list-component            |    2.72 kB |                 1.12 kB
chunk-UGU74ZSU.js     | mailing-dashboard-component                |    2.62 kB |                 1.08 kB
chunk-VNQVJK42.js     | data-sources-component                     |    2.61 kB |                 1.05 kB
chunk-A43EBZ5Y.js     | -                                          |    2.47 kB |              1011 bytes
chunk-UZPJLLGS.js     | maintenance-component                      |    2.40 kB |              1021 bytes
chunk-OVXFP3CR.js     | -                                          |    2.40 kB |               734 bytes
chunk-K6SLGTGK.js     | subscription-component                     |    2.35 kB |                 1.01 kB
chunk-VGBLNZCK.js     | about-component                            |    2.32 kB |                 1.11 kB
chunk-V5WDZXIJ.js     | index                                      |    2.26 kB |                 1.02 kB
chunk-QBWE3OP3.js     | scenarios-editor-component                 |    2.13 kB |               991 bytes
chunk-TM3TOHML.js     | dmarc-component                            |    2.11 kB |                 1.00 kB
chunk-FEGDCH2H.js     | import-detail-component                    |    2.10 kB |              1001 bytes
chunk-3QU7IKFL.js     | smart-campaigns-component                  |    2.10 kB |               996 bytes
chunk-6HNAU5PQ.js     | -                                          |    2.03 kB |               728 bytes
chunk-4727HNAD.js     | smart-editor-edit-component                |    2.01 kB |               962 bytes
chunk-EUF7TTOF.js     | scenarios-analytics-component              |    1.95 kB |               915 bytes
chunk-XEMXIBSX.js     | file-manager-page-component                |    1.94 kB |               812 bytes
chunk-JNVHKWTL.js     | available-tooltips-component               |    1.80 kB |               768 bytes
chunk-DGUKEYS7.js     | -                                          |    1.77 kB |               709 bytes
chunk-SEZXD3CZ.js     | index                                      |    1.73 kB |               407 bytes
chunk-CLMKRF7L.js     | -                                          |    1.67 kB |               498 bytes
chunk-WBNECBV4.js     | index                                      |    1.66 kB |               430 bytes
chunk-CK3PR43N.js     | available-tabs-component                   |    1.65 kB |               670 bytes
chunk-YVR6BVUO.js     | -                                          |    1.65 kB |               790 bytes
chunk-GSACQAI3.js     | sms-transactions-component                 |    1.63 kB |               769 bytes
chunk-4I7AG3GS.js     | -                                          |    1.61 kB |               674 bytes
chunk-T6OQ23ZJ.js     | subscription-billing-information-component |    1.59 kB |               777 bytes
chunk-X4FJMZIY.js     | -                                          |    1.58 kB |               470 bytes
chunk-WSWQPIAS.js     | tarif-component                            |    1.58 kB |               749 bytes
chunk-IYLBJKG3.js     | -                                          |    1.50 kB |               741 bytes
chunk-C3WS5KHU.js     | breadcrumb-fuzzy-view-component            |    1.49 kB |               761 bytes
chunk-UBYMWNHH.js     | contact-list-component                     |    1.43 kB |               723 bytes
chunk-M2GXEVTG.js     | email-statistics-component                 |    1.41 kB |               727 bytes
chunk-EY4DP4F5.js     | available-ganalytics-component             |    1.38 kB |               640 bytes
chunk-OMQ2QZFD.js     | survey-component                           |    1.37 kB |               708 bytes
chunk-YIZJAAGV.js     | webhook-component                          |    1.36 kB |               690 bytes
chunk-ESZRZS5U.js     | double-opt-in-component                    |    1.35 kB |               694 bytes
chunk-TGGZYHRU.js     | sms-component                              |    1.34 kB |               675 bytes
chunk-QCKNUG56.js     | workshops-dashboard-component              |    1.30 kB |               678 bytes
chunk-3DPECZOJ.js     | help-dashboard-component                   |    1.29 kB |               678 bytes
chunk-WM45AGNR.js     | -                                          |    1.21 kB |               579 bytes
chunk-G2UAIMSP.js     | -                                          |    1.17 kB |               545 bytes
chunk-RBLIS3M2.js     | index                                      |    1.16 kB |               384 bytes
chunk-5AX7I6ES.js     | index                                      |    1.11 kB |               320 bytes
chunk-QZUY2ZTT.js     | -                                          |    1.07 kB |               531 bytes
chunk-V4OWTHKK.js     | -                                          |    1.07 kB |               596 bytes
chunk-VVJMDW7J.js     | user-routes                                |    1.01 kB |               313 bytes
chunk-KUR5BGBV.js     | -                                          |    1.01 kB |               412 bytes
chunk-YCJAXQC7.js     | company-routes                             | 1002 bytes |              1002 bytes
chunk-7JDBYSHJ.js     | -                                          |  951 bytes |               951 bytes
chunk-HWWJXFB5.js     | -                                          |  920 bytes |               920 bytes
chunk-T5MYORQM.js     | available-typography-component             |  900 bytes |               900 bytes
chunk-EJ4W7GZ3.js     | data-sources-routes                        |  872 bytes |               872 bytes
chunk-QVJ3MOCH.js     | -                                          |  849 bytes |               849 bytes
chunk-OELWPWNP.js     | -                                          |  795 bytes |               795 bytes
chunk-TVK2FZVS.js     | mailing-routes                             |  793 bytes |               793 bytes
chunk-XAOC6ZF2.js     | feed-routes                                |  743 bytes |               743 bytes
chunk-47ZVL6C2.js     | index                                      |  734 bytes |               734 bytes
chunk-VJIK2OAF.js     | index                                      |  668 bytes |               668 bytes
chunk-W35CACWP.js     | integration-routes                         |  619 bytes |               619 bytes
chunk-HF5KH2EG.js    [2[39mm | reset-password-routes                      |  618 bytes |               618 bytes
chunk-5HMERI4W.js     | subscription-routes                        |  612 bytes |               612 bytes
chunk-TO2H5JXK.js     | sign-up-routes                             |  591 bytes |               591 bytes
chunk-VNNYD3HU.js     | index                                      |  493 bytes |               493 bytes
chunk-QIB3MRJ7.js     | available-components-component             |  470 bytes |               470 bytes
chunk-6XUYADFC.js     | import-export-routes                       |  441 bytes |               441 bytes
chunk-FSTCPFSF.js     | web-form-routes                            |  393 bytes |               393 bytes
chunk-Y5LOGCGE.js     | one-time-campaign-routes                   |  373 bytes |               373 bytes
chunk-WF63N3S7.js     | custom-field-routes                        |  360 bytes |               360 bytes
chunk-QDGRJB3Q.js     | contact-settings-routes                    |  353 bytes |               353 bytes
chunk-2IO67JWQ.js     | purpose-routes                             |  344 bytes |               344 bytes
chunk-OTGGLXJK.js     | graphic-itentity-routes                    |  325 bytes |               325 bytes
chunk-DD5XHIZW.js     | index                                      |  311 bytes |               311 bytes
chunk-WWF3G5N4.js     | contacts-routes                            |  310 bytes |               310 bytes
chunk-2ALPOOOY.js     | template-edit-routes                       |  295 bytes |               295 bytes
chunk-HYASR44R.js     | promo-code-routes                          |  277 bytes |               277 bytes
chunk-VLR4L46Z.js     | -                                          |  275 bytes |               275 bytes
chunk-NPXHID53.js     | index                                      |  268 bytes |               268 bytes
chunk-KV6NEO6V.js     | contact-lists-routes                       |  266 bytes |               266 bytes
chunk-CLZKHSKX.js     | maintanence-routes                         |  260 bytes |               260 bytes
chunk-6V3CVI4C.js     | not-found-routes                           |  254 bytes |               254 bytes
chunk-LGJP4VWM.js     | export-new-routes                          |  251 bytes |               251 bytes
chunk-XJGDVYID.js     | logout-routes                              |  250 bytes |               250 bytes
chunk-XG4OUZ3R.js     | login-routes                               |  248 bytes |               248 bytes
chunk-EUJGYFAC.js     | template-routes                            |  247 bytes |               247 bytes
chunk-IAK5HV4M.js     | import-routes                              |  242 bytes |               242 bytes
chunk-YQT4GKST.js     | index                                      |  222 bytes |               222 bytes
chunk-GDIRUS2D.js     | index                                      |  212 bytes |               212 bytes
chunk-KDXMPOHF.js     | landing-page-routes                        |  211 bytes |               211 bytes
chunk-QZVTXGNE.js     | sender-confirmation-routes                 |  207 bytes |               207 bytes
chunk-2ETUWUVJ.js     | company-user-request-routes                |  203 bytes |               203 bytes
chunk-2XKJDK3Y.js     | sender-routes                              |  201 bytes |               201 bytes
chunk-ONKEPV5Q.js     | index                                      |  197 bytes |               197 bytes
chunk-KA5HIPBF.js     | generic-json-feed-item-list-routes         |  189 bytes |               189 bytes
chunk-FCPEQVUH.js     | email-statistics-routes                    |  185 bytes |               185 bytes
chunk-3QTWUBKD.js     | company-user-activity-routes               |  182 bytes |               182 bytes
chunk-WSQFYLKY.js     | article-feed-item-list-routes              |  181 bytes |               181 bytes
[9[39m2mchunk-EA2MWKXF.js     | product-feed-item-list-routes              |  181 bytes |               181 bytes
chunk-TX3KBC25.js     | import-detail-routes                       |  169 bytes |               169 bytes
chunk-WW4PPY4R.js     | facebook-audience-routes                   |  168 bytes |               168 bytes
chunk-LFPVAB2F.js     | default-settings-routes                    |  166 bytes |               166 bytes
chunk-UTG7XDW5.js     | company-user-routes                        |  166 bytes |               166 bytes
chunk-5L25KKY5.js     | notification-routes                        |  164 bytes |               164 bytes
chunk-JF5NG7AS.js     | contact-detail-routes                      |  162 bytes |               162 bytes
chunk-2JOHYDWQ.js     | email-routes                               |  160 bytes |               160 bytes
chunk-UQXXNKGB.js     | general-info-routes                        |  158 bytes |               158 bytes
chunk-FXVL4EVS.js     | general-info-routes                        |  158 bytes |               158 bytes
chunk-AIPJIF4A.js     | device-routes                              |  152 bytes |               152 bytes
chunk-DGFDUMDC.js     | shoptet-routes                             |  150 bytes |               150 bytes
chunk-EAJVOR4V.js     | footers-routes                             |  150 bytes |               150 bytes
chunk-NL5AQHGK.js     | contact-new-routes                         |  150 bytes |               150 bytes
chunk-QA2PM6ZN.js     | zapier-routes                              |  148 bytes |               148 bytes
chunk-MEKZ7OPW.js     | sklik-routes                               |  146 bytes |               146 bytes
chunk-ZGLNYSXK.js     | make-routes                                |  144 bytes |               144 bytes
chunk-BPUERWD2.js     | dns-routes                                 |  142 bytes |               142 bytes
chunk-5R5DY4QX.js     | label-routes                               |  120 bytes |               120 bytes
chunk-242VIIZZ.js     | -                                          |   99 bytes |                99 bytes

Application bundle generation complete. [19.976 seconds]


@montella1507
Copy link
Author

LIbrary config files:
configs.zip

@alan-agius4
Copy link
Collaborator

Managed to replicate it.

@montella1507
Copy link
Author

montella1507 commented Dec 8, 2023

Archive.zip
Cool. I have not tried this in Webpack build (as far as i had seen your comment here, that you managed it..) but ..
If i understand the diagram correctly.. It has creted only 1 chunk with all icons:

image

And i think it will pack seAction only with "feature-cars" chunk with webpack as far as it is used only inside this lazy loaded component.

@montella1507
Copy link
Author

It is probably more important as far as developers (us included) use this type of codesplitting for things like:

  • actions, reducers, features, actions creators (ngrx)
  • http requests and their mappers
  • etc...

Icons are used as an example, because they are super primitive (just svg constants)

@montella1507
Copy link
Author

@alan-agius4 just one small piece of information.

You have provided an example with 2 constants inside 1 file.

We were not able to make them split into multiple smaller chunks and had to split them to multile TS files.

It was tip by @kreuzerk as he mentions here:
https://medium.com/angular-in-depth/how-to-create-a-fully-tree-shakable-icon-library-in-angular-c5488cf9cd76

Maybe webpack cannot split 1 file to multiple chunks (A file is miminal piece of data that can stand alone?)

So it will be nice, if esbuild is able to be better :-)

@sod
Copy link

sod commented Dec 8, 2023

I guess your answer is hidden here evanw/esbuild#2636 (comment)

And the short term solution would be, don't use barrels. They slow down your entire toolchain anyway (build, ide, typescript). Especially the export * from kind, as an import may have to parse through hundreds of files to find what you were looking for.

If you used a generator to generate the barrel, you may create an index.ts with export const iconFoo = '... data ...' right away instead, so flatten it yourself.

@montella1507
Copy link
Author

montella1507 commented Dec 8, 2023

??? Dont use barel?
EVERY library on this world use barel file..OK, sometimes it is called "public_api.ts".
It is the same as 1 per library (secondary entry point) index.ts

just diffent name.

In our case, we have only 1 index.ts file generated by NX monorepo as entry poinnt to library / secondary-entry-point library.

image

@montella1507
Copy link
Author

  • we dont have problem with treeshaking (not-used everything is treeshaken away, because we have only 1 public "entry file"). We have problem with code-splitting... and only with ESBUILD.

@sod
Copy link

sod commented Dec 8, 2023

??? Dont use barel?
EVERY library on this world use barel file

I'm not saying you are wrong. Just saying that there are workarounds. And omitting barrels is not as ridiculous as it seems. After all it's the same move angular recently did with the switch from NgModule (kinda like a manual managed barrel) to standalone (direct import)

@alan-agius4
Copy link
Collaborator

alan-agius4 commented Dec 11, 2023

Even though barrel files might occasionally trigger tree-shaking bailouts, it's inconsequential here since the code resides within a library where all files are bundled into a single FESM file.

The capability for file splitting in esbuild has been removed according to this commit: evanw/esbuild@fad7f47. I've raised an issue here: evanw/esbuild#3531 for it to be re-added.

In this scenario, the recommended approach is to export each icon as a separate entry point, mirroring the way @angular/material exports its components.

As it stands, there's no action we can take on our part regarding this matter until it has been addressed upstream.

@alan-agius4 alan-agius4 closed this as not planned Won't fix, can't repro, duplicate, stale Dec 11, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants