Angular 生产版本不能缩短 class 名称吗?
Can the Angular production build not shorten class names?
是否可以告诉 Angular 生产版本不要缩短 class 名称?
类似于`ng serve -o --prod=true --abbreviateClassName=false
我遇到的问题是我正在使用这个库:
https://github.com/fireflysemantics/validator/
它允许我们修饰 class 属性以验证它们。
由于 Angular 缩短了 class 名称,我收到如下错误:
main.2876a5e2eb85f08784d9.js:1 Uncaught Error: The ValidationContainer
already contains context with signature t_e_sku.
at Function.t.addValidationContext
装饰器由 ConstructorName_propertyName
键控,并且由于 Angular 生产构建缩短了名称,这在为每个装饰器创建验证上下文时引入了冲突。
您可以尝试禁用优化:
https://github.com/angular/angular-cli/wiki/build
ng serve --prod --optimization=false
angular.json
文件中的构建器配置也有一个 optimization
标志:
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"optimization": false
我不确定这个flag是不是和上面的一样
我相信这会增加捆绑包的大小。对于这类事情,这里没有任何更精细的粒度控制,而且我认为自定义构建器不会有帮助。
我们有一段时间没有 ng eject
选项来创建自定义 WebPack 构建,但您可能会找到一些关于如何手动执行此操作的在线示例。 Angular 9 出来的时候更新会很痛苦。
也许您使用的这个库是为 NodeJS 而不是网络浏览器设计的。
是否可以告诉 Angular 生产版本不要缩短 class 名称?
类似于`ng serve -o --prod=true --abbreviateClassName=false
我遇到的问题是我正在使用这个库:
https://github.com/fireflysemantics/validator/
它允许我们修饰 class 属性以验证它们。
由于 Angular 缩短了 class 名称,我收到如下错误:
main.2876a5e2eb85f08784d9.js:1 Uncaught Error: The ValidationContainer
already contains context with signature t_e_sku.
at Function.t.addValidationContext
装饰器由 ConstructorName_propertyName
键控,并且由于 Angular 生产构建缩短了名称,这在为每个装饰器创建验证上下文时引入了冲突。
您可以尝试禁用优化:
https://github.com/angular/angular-cli/wiki/build
ng serve --prod --optimization=false
angular.json
文件中的构建器配置也有一个 optimization
标志:
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"optimization": false
我不确定这个flag是不是和上面的一样
我相信这会增加捆绑包的大小。对于这类事情,这里没有任何更精细的粒度控制,而且我认为自定义构建器不会有帮助。
我们有一段时间没有 ng eject
选项来创建自定义 WebPack 构建,但您可能会找到一些关于如何手动执行此操作的在线示例。 Angular 9 出来的时候更新会很痛苦。
也许您使用的这个库是为 NodeJS 而不是网络浏览器设计的。