angular / angular-cli

CLI tool for Angular
https://cli.angular.io
MIT License
26.74k stars 11.98k forks source link

ESBUILD code splitting is way worse than webpack #26622

Closed montella1507 closed 9 months ago

montella1507 commented 10 months ago

Command

build

Is this a regression?

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:

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:

ESBuild:

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 commented 10 months ago

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 commented 10 months ago

LIbrary config files: configs.zip

alan-agius4 commented 10 months ago

Managed to replicate it.

montella1507 commented 10 months ago

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 commented 10 months ago

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

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

montella1507 commented 10 months ago

@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 commented 10 months ago

I guess your answer is hidden here https://github.com/evanw/esbuild/issues/2636#issuecomment-1295405909

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 commented 10 months ago

??? 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 commented 10 months ago
sod commented 10 months ago

??? 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 commented 9 months ago

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: https://github.com/evanw/esbuild/commit/fad7f47170ca2c452833c031f96133ff149a90d5. I've raised an issue here: https://github.com/evanw/esbuild/issues/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.

angular-automatic-lock-bot[bot] commented 8 months ago

This issue has been automatically locked due to inactivity. Please file a new issue if you are encountering a similar or related problem.

Read more about our automatic conversation locking policy.

This action has been performed automatically by a bot.