删除未使用的Angular模块依赖项(导入和提供程序)

时间:2018-02-20 10:53:18

标签: angular typescript module

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

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

然后我需要将SomeView移到其他模块。这让我得以:

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

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

所以我的问题是:有没有办法找到给定的模块导入或提供者是否可以安全删除?在我正在开发的项目中,一个模块可以加载另外20个模块,保持清洁是非常困难的任务。

1 个答案:

答案 0 :(得分:1)

  

所以我的问题是:有没有办法找到给定的模块导入或提供程序是否可以安全删除?在我正在从事的项目中,一个模块可以加载20个其他模块,保持其清洁确实是一项艰巨的任务。

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

如果您只有很少的单元测试可以验证可以创建一个组件,那么您将知道模块的拆除是否会破坏单元测试。