首页 > 解决方案 > 让 WebStorm 在自动导入中遵守 TypeScript 路径

问题描述

我有一个 Lerna 项目(TypeScript),其中包含用于 UI、API、后端的子模块和用于在域类型之间进行转换的实用程序模块等。

ROOT_DIR/tsconfig.json
    packages/
        ui/
            tsconfig.json
            src/(source files)
        api/
            tsconfig.json
            src/(source files)
        domain/
            tsconfig.json
            src/(source files)

我希望我的前端能够做类似import { getUser } from '@project/ui/user而不是import { getUser } from '../../../../ui/src/user'.

我已经进入了每个子模块tsconfig.json并设置了compilerOptions.rootDir = 'src'and extends = '../../tsconfig.json',并且在根目录中tsconfig.json我设置了compilerOptions.baseUrl = './packages'and compilerOptions.paths["@project/*"] = "./*/src"

我的理解是,基于阅读JetBrains关于如何执行此操作的文档(说使用tsconfig.json paths道具)和TypeScript 在道具上的文档paths,这就是您应该这样做的方式。

但是,当我手动尝试import { myFunc } from '@project/ui/userWebStorm/TypeScript时,会出现cannot find module '@project/ui/user' or its corresponding type declarations.

如果我将光标放在我的代码中需要导入并点击 option+enter 的东西上,它会添加import { myFunc } from '../../../../ui/src/user'.

我该如何解决?(关于如何修复 Gatsby 的配置以正确编译所有这些,未来可能会有后续问题,但我会将其推迟到问题出现之前,但会提前说明,以防明显影响答案。 )

编辑我还要说我在 SO 上寻找答案的范围很广,但是提议的解决方案似乎不起作用,或者它们无法解决我的项目中使其更加复杂的不同移动部分。

标签: typescriptwebstormlerna

解决方案


推荐阅读