Как уменьшить размер файла производственного кода Angular 2.0

Я использую Angular -Cli с его проектом по умолчанию.

Я пытаюсь получить производственную версию кода, поэтому я запускаю --prod и на выходе вижу 911 КБ, можно ли его оптимизировать дальше? И как я могу сказать angular для обслуживания файла gzip?

ng serve --prod

введите описание изображения здесь

FYI: я попробовал ng serve -prod -aot, но сервер снова строится в цикле. Однако, когда я попытался выполнить ng build -prod -aot, я вижу, что размер уменьшается, но я не могу запустить сервер.

ng build --prod --aot

введите описание изображения здесь

Ниже приведен код, который я использую в файле Package.json

{
  "name": "angular2-quickstart",
  "version": "0.0.0",
  "license": "MIT",
  "angular-cli": {},
  "scripts": {
    "start": "ng serve",
    "lint": "tslint \"src/**/*.ts\"",
    "test": "ng test",
    "pree2e": "webdriver-manager update",
    "e2e": "protractor"
  },
  "private": true,
  "dependencies": {
    "@angular/common": "2.0.0",
    "@angular/compiler": "2.0.0",
    "@angular/core": "2.0.0",
    "@angular/forms": "2.0.0",
    "@angular/http": "2.0.0",
    "@angular/platform-browser": "2.0.0",
    "@angular/platform-browser-dynamic": "2.0.0",
    "@angular/router": "3.0.0",
    "core-js": "^2.4.1",
    "rxjs": "5.0.0-beta.12",
    "ts-helpers": "^1.1.1",
    "zone.js": "^0.6.23"
  },
  "devDependencies": {
    "@types/jasmine": "^2.2.30",
    "angular-cli": "1.0.0-beta.16",
    "codelyzer": "~0.0.26",
    "jasmine-core": "2.4.1",
    "jasmine-spec-reporter": "2.5.0",
    "karma": "1.2.0",
    "karma-chrome-launcher": "^2.0.0",
    "karma-cli": "^1.0.1",
    "karma-jasmine": "^1.0.2",
    "karma-remap-istanbul": "^0.2.1",
    "protractor": "4.0.9",
    "ts-node": "1.2.1",
    "tslint": "3.13.0",
    "typescript": "2.0.2"
  }
}

Ответ 1

Во-первых, поскольку все веб-серверы теперь выводят gzip, ваш фактический размер не является размером файла .js, а размером файла .gz. Это единственная причина, по которой этот файл был создан, насколько я понимаю, чтобы показать вам реалистичный размер gzip.

Однако есть место для более качественных размеров, 40% + улучшение. Если вы устанавливаете и используете Angular CLI beta 16, например (текущая версия на момент написания), он имеет компилятор AoT из коробки.

Запустите его так:

ng build -prod --aot

По состоянию на бета-16 есть некоторые проблемы с watch/serve и AoT на данный момент, хотя, например this, так что вы можете пока его использовать только для фактического производства, а не для сервера dev.

Обновление:

Начиная следующий релиз после бета .26, --aot будет включен по умолчанию, когда вы используете -prod.

В настоящее время объединяется в master.