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

标签 angular typescript module

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

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

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

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

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

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

最佳答案

So my question is: is there a way to find if given module import or provider is safe to delete? In a project I am working on, where one module can load twenty others, keeping it clean is really hard task.

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

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

关于angular - 删除未使用的 Angular 模块依赖项(导入和提供程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48883585/

相关文章:

javascript - 如何在 Angular 2 上调用 javascript

node.js - 具有持久数据的NodeJS + RxDB + Electron

javascript - 静态删除对象键 JavaScript

angular - 如何在 Angular 2 中监听点击并按住?

javascript - 在 angular2 中制作我自己的记录器

angular - 使用或不使用订阅将数据发布到 API

javascript - 检查 scrollIntoView 是否完成

Linux 内核模块、配置和持久状态的概念

javascript - Angular导出导入对象(获取对象数据)

angularjs - tsconfig 模块选项 - 'System' 是指 SystemJS 吗?