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

Łuk*_*iak 5 module typescript angular

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

@NgModule({
  imports: [DirectivesModule, ...],
  declarations: [SomeView, ...],
  ...
})
Run Code Online (Sandbox Code Playgroud)

然后,我需要SomeView转到其他模块。这给我留下了:

@NgModule({
  imports: [DirectivesModule, ...],
  declarations: [...],
  ...
})
Run Code Online (Sandbox Code Playgroud)

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

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

Rea*_*lar 3

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

单元测试是验证模块是否可以安全删除的唯一已知方法。为什么 Angular 无法自我检测模块的使用情况的解释相当复杂,但请记住,模块可以转发内部模块。因此一个模块可能有许多子模块的导出。由于提供者可以在运行时通过injector.get(myService). 这使得查找用法变得极其困难,因为无法通过查看源代码来了解正在使用哪个注入器。

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