angular - 使构建在生产中失败,但在开发模式下失败
问题描述
我目前正在开发一个 Angular 应用程序,并且想知道是否可以使构建在生产环境中失败,但在本地开发环境中却不行。
例如,我有一个复杂的登录逻辑,我想在开发时进行处理。为此,我只需要在中引入一行app.component.ts
:
ngOnInit(): {
this.userservice.mockLoginUser();
...
}
有什么办法可以让这条线在开发模式下运行,但是如果我在生产中忘记它会失败吗?例如,创建一个仅失败的命令ng build --prod
(但不是 for ng serve
)?
仅使用environment.ts
不是一个选项,因为我不想污染代码库,我想物理删除它(以及mockLoginUser
方法),因为我只在少数情况下需要它。我的另一个想法是创建一个 tslint 规则来阻止它投入生产,但找不到任何东西。
解决方案
为什么不使用单元测试?
在我正在从事的一个项目中,我们有一个微前端应用程序,在独立运行(没有容器)时很难进行身份验证。
我经常将我的开发永无止境的 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 管道会自动运行测试。
推荐阅读
- javascript - 如何通过php中的函数在浏览器中打印插入查询
- python - 按索引(列)编号选择熊猫数据框中的列
- python - 在多行中向 ipython 输入结构化命令
- android - 错误:程序类型已经存在:androidx.versionedparcelable.ParcelImpl
- dart - 子类 const 构造函数
- excel - 使用数组的自定义排序导致excel崩溃
- azure-keyvault - getkeyversions 输出的排序
- mysql - 加入查询返回错误的输出
- dart - 扩展 Google Flutter 中的 UnderlineInputBorder 类
- web-scraping - 如何使用scrapy提取加载不同的数据