在 VSCode 中自动导入以尊重*两个*相对路径和 tsconfig.json 路径

Guy*_*Guy 5 tsconfig visual-studio-code

本期中,建议定义此设置字段:

"typescript.preferences.importModuleSpecifier": "relative"
Run Code Online (Sandbox Code Playgroud)

为了将 VSCode 的自动导入行为从绝对切换为相对。这:

import { Logo } from 'src/components/Logo';
Run Code Online (Sandbox Code Playgroud)

变成:

import { Logo } from '../../components/Logo';
Run Code Online (Sandbox Code Playgroud)

这是我们期望的自动导入行为。

但是,通过更改此设置,自动导入机制开始忽略tsconfig.ts和 而不是导入包:

import { Button } from '@scope/base-ui';
Run Code Online (Sandbox Code Playgroud)

它还相对导入文件:

import { Button } from '../../../packages/src/base-ui';
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以两全其美?

小智 2

"typescript.preferences.importModuleSpecifier": "shortest"
Run Code Online (Sandbox Code Playgroud)

如果路径段数少于相对路径,则这将选择绝对导入(包括 tsconfig 定义的路径)。如果没有更短的绝对路径,VS Code 将使用相对路径。