Может ли производственная сборка Angular не сокращать имена классов? - PullRequest
3 голосов
/ 06 января 2020

Можно ли сказать, что Angular производственная сборка не сокращает имена классов?

Что-то вроде `ng serve -o --prod = true --abbreviateClassName = false

У меня проблема в том, что я использую эту библиотеку:

https://github.com/fireflysemantics/validator/

Это позволяет нам украшать свойства класса для проверки их.

Поскольку Angular сокращает имена классов, я получаю следующие ошибки:

main.2876a5e2eb85f08784d9.js:1 Uncaught Error: The ValidationContainer 
      already contains context with signature t_e_sku.
    at Function.t.addValidationContext 

Декораторы имеют ключ ConstructorName_propertyName, а так как производственная сборка Angular сокращает имя, это вводит конфликты при создании контекстов проверки для декораторов.

1 Ответ

3 голосов
/ 06 января 2020

Вы можете попробовать отключить оптимизацию:

https://github.com/angular/angular-cli/wiki/build

ng serve --prod --optimization=false

В конфигурации angular.json также имеется флаг optimization для конфигурации компоновщика. file:

      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "optimization": false

Я не совсем уверен, если этот флаг такой же, как указано выше.

Я уверен, что это увеличит размеры пакета. Здесь нет более тонких элементов управления зерном для такого рода вещей, и я не думаю, что пользовательский конструктор поможет.

У нас не было опции ng eject для создания пользовательской сборки WebPack для некоторое время, но вы можете найти некоторые примеры того, как это сделать вручную. Обновление будет проблематичным, когда выйдет Angular 9.

Возможно, эта библиотека, которую вы используете, предназначена для NodeJS, а не для веб-браузеров.

...