Почему создается файл polyfill. js, даже если мой .browserlistr c нацелен только на «последнюю 1 chrome версию»? - PullRequest
0 голосов
/ 13 июля 2020

Вот образ сборки нового приложения Angular (v10).

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

Вот tsconfig.base.json:

 {
    "compileOnSave": false,
      "compilerOptions": {
        "baseUrl": "./",
        "outDir": "./dist/out-tsc",
        "sourceMap": true,
        "declaration": false,
        "downlevelIteration": false,
        "experimentalDecorators": true,
        "moduleResolution": "node",
        "importHelpers": true,
        "target": "es2020",
        "module": "es2020",
        "lib": ["es2020", "dom"]
      },
      "angularCompilerOptions": {
        "strictInjectionParameters": true,
        "strictTemplates": true
      }
    }

Вот содержимое .browserlistrc файл:

last 1 Chrome version

Мой вопрос: почему там файл polyfills.js? Разве тот факт, что я ориентируюсь на последнюю версию ES, а также на последнюю версию Chrome, не отменяет необходимость в каких-либо полифиллах? Или я неправильно понимаю использование этого типа файла?

1 Ответ

1 голос
/ 14 июля 2020

Изучая фактический результат polyfills.js и экспериментируя с тем, что происходит при его удалении, я обнаружил, что Angular «Зоны» предоставляются через этот файл.

Например, если я удалю polyfills.js оператор импорта скрипта, эта ошибка попадает:

if (this.hasPendingMacrotasks = !1,
    this.hasPendingMicrotasks = !1,
    this.isStable = !0,
    this.onUnstable = new Hs(!1),
    this.onMicrotaskEmpty = new Hs(!1),
    this.onStable = new Hs(!1),
    this.onError = new Hs(!1),
    "undefined" == typeof Zone)
    throw new Error("In this configuration Angular requires Zone.js");
            https://angular.io/guide/zone#setting-up-zonejs

Копая дальше, я обнаружил, что все это даже в документации Angular по зонам , а также одна строка без комментариев polyfills.ts:

import 'zone.js/dist/zone'; 

Итак, TLDR; пока вы используете зоны в своем приложении Angular (и есть способы удалить его), вы всегда будете иметь файл polyfills.js как часть выходных данных сборки.

...