IDE-在库/桶之间移动文件时自动更新导入



我们正在使用nrwl/nx将我们的typescript项目拆分到更小的库中,但重构是一个真正的难题。

例如,当我们将单个文件从一个app/lib移动到一个新的lib时,整个项目中的导入语句必须更新,并且必须遵守tsconfig路径映射和桶文件。

这里有一个GitHub测试项目,包含代码和详细描述:nx-reformer
还有一个分支expected_reformation,具有预期的重构结果。

我们使用IntelliJ Idea和VsCode。然而,他们似乎都没有正确处理这个案件。我们也未能在任一IDE中找到适合这种情况的扩展。

我想这种重构是很常见的,因此我很惊讶他的重构不受支持
有人能推荐一个扩展、另一个IDE/编辑器或工具来处理这种情况吗?

参考文献:

  • IntellIJ在移动文件时不处理桶:#WEB-44288
  • VsCode相同
    • 扩展移动ts也没有帮助

由于#WEB-44288仍未修复,我想出了一个解决方法
如果您遇到此问题,请观看IntelliJ问题#WEB-44288

这个想法是在新的桶中创建一个空文件,然后使用移动模块成员

详细信息(例如在nx重构中(:

  • 在目标桶index.ts文件中添加export * from './lib/file-to-move';
    • 注意:此语句当前将显示错误忽略错误
  • 现在打开要移动的源文件:libs/lib-a/src/lib/file-to-move.ts
    • 将光标设置为顶级符号(TO_MOVE常量(,然后按F6打开"移动模块成员"对话框
    • 设置目标文件(我们刚刚在index.ts文件中引用的(的To:路径:[..]/lib-bsrclibfile-to-move.ts
    • 提示:要选择所有成员,请单击CTRL-A并点击空格选择所有复选框
    • Refactor
  • 现在所有导入都已正确更新
  • 最终清理:
    • 删除原始源文件:libs/lib-a/src/lib/file-to-move.ts
    • 并删除源桶文件中的导出:libs/lib-a/src/index.ts

最新更新