首页 > 解决方案 > 在 Angular 8 中避免使用 Mangle 类名称

问题描述

我在 Angular 8 中有一个单页应用程序。在这个应用程序中,我在 typescript 类中使用构造函数名称来执行一些操作。在开发中一切正常。

class User {
  GetClassName() {
     return this.constructor.name;
  } 
  // returns "User"
}

但是,当我在生产模式下构建时:

npm run ng build -- --configuration=prod

Angular 执行了很多优化,包括 Uglify 类名

class User {
  GetClassName() {
     return this.constructor.name;
  }
  // returns "t"
}

所以我的构造函数名称是 Now t 而不是 user。如何配置 Angular Build 以避免 Uglify 某些类名或所有类名?

似乎是什么时候可以替换 mangle 选项,但我不会在我的 nodemodule 中这样做,但更喜欢使用构建时给出的自定义配置文件。

有人成功做到了吗?

谢谢大家

标签: angulartypescriptuglifyjs

解决方案


来自:Angular-cli:如何忽略被缩小的类名

Angular cli builder 支持 NG_BUILD_MANGLE、NG_BUILD_MINIFY、NG_BUILD_BEAUTIFY 节点环境参数(在版本 8 中检查)。

您可以在运行 npm 脚本时通过以下方式设置它们: env NG_BUILD_MANGLE=false NG_BUILD_MINIFY=false NG_BUILD_BEAUTIFY=true ng build --prod

这将导致未缩小的输出,但仍将应用摇树和其他优化(与仅关闭优化相比)。


推荐阅读