typescript - 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,两组用户都遇到了这个错误。
编辑:
如果您也遇到此问题,我已经编写了一个临时修复程序,但是非常感谢您提供适当的解决方案!
解决方案
我不确定这是否能完全解决您的问题,但我仍将其留在这里。我只能在 Webstorm 上重现该问题,而不能在 Visual Studio Code 上重现。如果这不能解决您的问题,请发表评论,我将进一步调查。
打字稿配置:tsconfig.json
您可以尝试修改您的 s 以使用标志(在与 相同的 JSON 级别上)tsconfig.json
显式排除文件夹,记录在TypeScript 的 TSConfig 参考文档中。dist
exclude
include
添加以下配置条目
"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
。- 全局:在 下,您可以在for
File | Settings | Editor | File Types
下添加另一个条目。Ignore Files and Folders
dist
注意:这将阻止 IDE 显示排除目录(例如
dist
)中的任何“源”作为建议。如果标识符是明确的,它将正确导入它而无需进一步提示。
不幸的是,这似乎需要在初始化项目后与开发人员进行手动交互 - 我无法找到您是否可以在 VCS 存储库中指定排除规则并在 IDE 中初始化项目时自动应用设置。
推荐阅读
- fortran - gfortran -std=f2008 如果调用 fseek 存在编译标志错误
- javascript - Chrome 扩展设置 httpOnly cookie 不起作用
- javascript - 使用ngrx效果时避免多次请求
- jquery - 如何在这个 jQuery 代码段中添加自定义的缓动函数而不获取所有的 jQueryUI?
- javascript - Django + JQuery - 交互式甘特图
- python - 根据共享列的另一个数据框中的列映射熊猫数据框中的新列
- cmake - 指定 CMake 生成器,除非用户作为命令参数显式传递
- python - Pytest 类范围参数化
- google-apps-script - 需要帮助以使用“Google 脚本”中的 ContactsApp 功能提取“电子邮件 ID”
- c# - 在 C# 中显示来自 CRM 的 5000 多条记录