首页 > 解决方案 > Typescript IDE自动从dist而不是src导入

问题描述

我目前正在开发一个 Typescript Monorepo 项目。

文件夹结构如下所示:

Clients
├- tsconfig.json
└- Packages
   ├- Core
   | ├- tsconfig.json
   | ├-┬ src
   | | └- MyModule.ts
   | └-┬ dist
   |   ├- MyModule.js
   |   └- MyModule.d.ts
   └┬ Web
    ├- tsconfig.json
    └-┬ src
      └- WebComponent.tsx

core/src包含我的模块,其中core/dist包含我的构建。
当我在其上自动导入一个模块时,web/src/WebComponent.tsx它会自动导入为@myApp/dist/MyModule而不是@myApp/src/MyModule.

这就是我的 TSConfig 路径的样子(在根文件夹中):

"baseUrl": "./",
"paths": {
    "@myApp/core/src/*": ["./packages/core/src/*"],
 }

我也试过这个:

"baseUrl": "./",
"paths": {
    "@myApp/core/*": ["./packages/core/*"],
}

这似乎不是 IDE 问题,因为我们团队中有人员同时使用 VSCode 和 Webstorm,两组用户都遇到了这个错误。

编辑:
如果您也遇到此问题,我已经编写了一个临时修复程序,但是非常感谢您提供适当的解决方案!

标签: typescriptnpmvisual-studio-codewebstormyarnpkg

解决方案


我不确定这是否能完全解决您的问题,但我仍将其留在这里。我只能在 Webstorm 上重现该问题,而不能在 Visual Studio Code 上重现。如果这不能解决您的问题,请发表评论,我将进一步调查。

打字稿配置:tsconfig.json

您可以尝试修改您的 s 以使用标志(在与 相同的 JSON 级别上)tsconfig.json显式排除文件夹,记录在TypeScript 的 TSConfig 参考文档中。distexcludeinclude

添加以下配置条目

   "exclude": ["dist/**/*"]

应指示不应从 IDE 中导入目录。但是,这似乎适用于 Visual Studio Code,但不受 Webstorm 的尊重(在下一节中讨论)。我不是 100% 确定为什么 Visual Studio Code 决定尝试导入includes. 如果这在 Visual Studio Code 上不适合您,我将需要更多详细信息来进行复制。

WebStorm(或任何其他 JetBrains IDE)

有两种解决方案:

  • dist特定于项目:在任何 JetBrains IDE 上,您可以通过打开上下文菜单(默认情况下右键单击)并单击 ,将目录标记为“排除”(例如目录) Mark Directory as | Excluded
  • 全局:在 下,您可以在forFile | Settings | Editor | File Types下添加另一个条目。Ignore Files and Foldersdist

注意:这将阻止 IDE 显示排除目录(例如dist)中的任何“源”作为建议。如果标识符是明确的,它将正确导入它而无需进一步提示。

不幸的是,这似乎需要在初始化项目后与开发人员进行手动交互 - 我无法找到您是否可以在 VCS 存储库中指定排除规则并在 IDE 中初始化项目时自动应用设置。


推荐阅读