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

Posted

技术标签:

【中文标题】IDE - 在库/桶之间移动文件时自动更新导入【英文标题】:IDE - auto-update imports when moving files between libs/barrels 【发布时间】:2020-08-16 18:50:38 【问题描述】:

我们正在使用 nrwl/nx 将我们的 typescript 项目拆分为更小的库,但重构确实很痛苦。

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

这是一个带有代码和详细描述的 GitHub 测试项目:nx-refactor 还有一个分支expected_refactoring 具有预期的重构结果。

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

我猜这种重构是很常见的,所以我很惊讶,他的不支持。 谁能推荐一个可以处理这种情况的扩展、另一个 IDE/编辑器或工具?

参考文献:

IntellIJ 在移动文件时不处理桶:#WEB-44288 与 VsCode 相同 扩展move-ts 也无济于事

【问题讨论】:

您解决了这个问题吗?目前遇到同样的问题 很遗憾没有 - 我希望它很快会在 intellij 中得到修复:#WEB-44288 此实用程序在某些情况下也很有用:github.com/luchsamapparat/refactor-imports 【参考方案1】:

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

思路是在新桶中创建一个空文件,然后使用Move Module members

详情(例如nx-refactor):

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

【讨论】:

苦苦挣扎,我可以确认它有效。不过,在移动之前创建和导出一个空文件不是必需的。 @Bielik 谢谢。你是对的,我已经更新了我的答案。

以上是关于IDE - 在库/桶之间移动文件时自动更新导入的主要内容,如果未能解决你的问题,请参考以下文章

使用带有自动布局的推送时隐藏按钮时,约束更新导致项目移动

云功能无法移动存档桶中的文件

移动时 Android 位置更新

Vue全家桶开发Android和IOS移动端应用常见问题解决

Vue全家桶开发Android和IOS移动端应用常见问题解决

Appium移动端自动化测试--使用IDE编辑并强化脚本