Angular 9: почему весь rx js lib попадает в сборку? - PullRequest
0 голосов
/ 15 апреля 2020

Если я создам пустой базовый проект с angular 9.1.1 и соберу его, весь rx js будет присутствовать в последнем пакете.

снимок экрана webpack-bundle analyzer

пакет. json является базовым:

  "dependencies": {
"@angular/animations": "~9.1.1",
"@angular/common": "~9.1.1",
"@angular/compiler": "~9.1.1",
"@angular/core": "~9.1.1",
"@angular/forms": "~9.1.1",
"@angular/platform-browser": "~9.1.1",
"@angular/platform-browser-dynamic": "~9.1.1",
"rxjs": "~6.5.5",
"tslib": "^1.11.1",
"zone.js": "~0.10.3"

},

Это нормально? Размер rx js составляет 70 КБ при сборке с флагом --prod, что не кажется нормальным.

1 Ответ

1 голос
/ 15 апреля 2020

Просто глядя на имена ваших файлов, я вижу, что вы не создаете свое приложение с производственной сборкой (если вы не отключили вывод ha sh с помощью --output-hashing none).

Производственная сборка в Angular устанавливается с флагом --prod или из конфигурации файла angular.json. Когда вы создаете свое приложение для производства, оно также встряхивает дерево неиспользуемых функций третьей библиотеки, таких как операторы rx.

Кроме того, я настоятельно рекомендую вам использовать source-map-explorer, а не набор инструментов для веб-упаковки.

Выполните эти 2 команды:

ng build --prod --source-maps

npx source-map-explorer dist/APP_NAME/main-es2015.*.js

...