VS Code是否可以在文件重命名/移动时自动更新JavaScript和TypeScript导入路径?

Lev*_*Lev 5 javascript typescript visual-studio-code

vscode是否有一个模块可以更新文件路径?例如,如果我有:

import './someDir/somelib'
Run Code Online (Sandbox Code Playgroud)

并且我重命名或移动somelib,它会自动更新上述所有文件中的文件路径吗?

小智 18

首先进行设置

在此输入图像描述

搜索“更新导入”

在此输入图像描述

您可以选择:

  • 提示(每次重命名时都会提示)
  • 始终(始终自动更新路径)
  • 从不(从不重命名路径并且不提示)


Gus*_*Gus 14

正如 @jamey graham 提到的,它在 Reacttypescript项目中不再为我工作。修复方法是将tsconfig.json文件更新为:

{
  "compilerOptions": {
    "baseUrl": "./src",
    // ...
  },
}
Run Code Online (Sandbox Code Playgroud)

并删除"include": ["src"]仅用于移动文件的选项。此后 VS Code 应该会很好地更新路径。

您可以在此之后恢复该"include": ["src"]选项。

我不知道为什么要删除"include": ["src"]工作。

如果这不起作用,请尝试打开.ts文件并触发Typescript: Restart TS server命令提示符中的选项,然后重试。

  • 通过从我的自动生成的 tsconfig 中删除 `"include":[],` 来修复它 (2认同)

Mat*_*ner 5

在VS Code 1.24中为JavaScript和TypeScript添加了此功能(跟踪问题

现在,当您移动或重命名文件时,系统将提示您查看是否要更新导入:

在此处输入图片说明

这由javascript.updateImportsOnFileMove.enabledtypescript.updateImportsOnFileMove.enabled设置控制。有效值为:

  • "prompt"—默认值。提示每个文件重命名/移动
  • "always" —始终尝试自动更新导入,而不提示
  • "never" —不更新导入,不提示

  • 我不知道什么时候,但这似乎已经不再对我有用(或者也许我记错了,它只适用于 TS 而不是 JS)。即使我将 javascript.updateImportsOnFileMove.enabled 设置为始终, require() 语句也不再在移动/重命名时更新。不运行大量扩展 - 仅运行 Angular 必需品“包” (7认同)
  • 有什么办法还可以使其自动保存更改的文件吗?我发现必须将更改了导入的所有文件进行挖掘以保存它们,这真是令人讨厌。 (2认同)

owe*_*ncm 5

在我的项目中设置打字稿后,导入更新不再对我有用。

解决方案如下:https://github.com/microsoft/vscode/issues/66937#issuecomment-475087628

具体来说,要jsconfig.json在我的项目的根目录中添加一个文件,其中包含:

{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es2016",
    "jsx": "preserve"
  },
  "exclude": ["node_modules", "**/node_modules/*"]
}
Run Code Online (Sandbox Code Playgroud)