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 - 在库/桶之间移动文件时自动更新导入的主要内容,如果未能解决你的问题,请参考以下文章
Vue全家桶开发Android和IOS移动端应用常见问题解决