首页 > 解决方案 > 使构建在生产中失败,但在开发模式下失败

问题描述

我目前正在开发一个 Angular 应用程序,并且想知道是否可以使构建在生产环境中失败,但在本地开发环境中却不行。

例如,我有一个复杂的登录逻辑,我想在开发时进行处理。为此,我只需要在中引入一行app.component.ts

ngOnInit(): { 
  this.userservice.mockLoginUser(); 
  ... 
}

有什么办法可以让这条线在开发模式下运行,但是如果我在生产中忘记它会失败吗?例如,创建一个仅失败的命令ng build --prod(但不是 for ng serve)?

仅使用environment.ts不是一个选项,因为我不想污染代码库,我想物理删除它(以及mockLoginUser方法),因为我只在少数情况下需要它。我的另一个想法是创建一个 tslint 规则来阻止它投入生产,但找不到任何东西。

标签: angulartypescript

解决方案


为什么不使用单元测试?

在我正在从事的一个项目中,我们有一个微前端应用程序,在独立运行(没有容器)时很难进行身份验证。

我经常将我的开发永无止境的 JWT 设置在ngOnInit

ngOnInit() {
    this.authService.setJwt('ey....');
}

然后我有一个简单的单元测试,它正在查看:

it('should not initialize JWT on component initialization', () => {
    const authService = TestBed.inject(AuthService);
    spyOn(authService, 'setJwt');

    fixture.detectChanges();

    expect(authService.setJwt).not.toHaveBeenCalled();
});

多亏了这一点,我永远不会忘记删除这个“开发代码行”。我的代码库没有污染哪些不必要的语句。此外,我什至无法将代码推送到任何分支,因为我们的 gitlab 管道会自动运行测试。


推荐阅读