【问题标题】:Removing unused Angular module dependencies (imports and providers)删除未使用的 Angular 模块依赖项(导入和提供程序)
【发布时间】:2018-02-20 10:53:17
【问题描述】:

假设我有SharedComponents 模块。在这个模块中有一个SomeView 组件。该组件使用来自DirectivesModule 的指令SomeDirective。我有这样的事情:

@NgModule({
  imports: [DirectivesModule, ...],
  declarations: [SomeView, ...],
  ...
})

然后我需要将SomeView 移动到其他模块。这给我留下了:

@NgModule({
  imports: [DirectivesModule, ...],
  declarations: [...],
  ...
})

没有其他声明的元素使用DirectivesModule。它不再需要了,所以我想删除它。但是我不能说不研究其他所有声明就可以安全删除。

所以我的问题是:有没有办法确定给定的模块导入或提供程序是否可以安全删除?在我正在进行的一个项目中,一个模块可以加载另外 20 个模块,保持它的整洁是一项艰巨的任务。

【问题讨论】:

标签: angular typescript module


【解决方案1】:

所以我的问题是:有没有办法确定给定的模块导入或提供程序是否可以安全删除?在我正在进行的一个项目中,一个模块可以加载另外 20 个模块,保持它的整洁是一项艰巨的任务。

单元测试是验证模块是否可以安全移除的唯一已知方法。 Angular 不能自我检测模块使用的解释相当复杂,但请记住,模块可以转发内部模块。所以一个模块可能有许多子模块的exports。由于可以在运行时使用injector.get(myService) 解析提供程序,这一事实变得更加困难。这使得找到用法变得极其困难,因为无法通过查看源代码来知道正在使用哪个注入器。

如果您有最少的单元测试来验证可以创建组件,那么您就会知道删除模块是否会破坏单元测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 2018-08-21
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    相关资源
    最近更新 更多