【问题标题】:Should VSCode report errors for TS files that are excluded from compilation?VSCode 是否应该报告编译中排除的 TS 文件的错误?
【发布时间】:2019-02-15 08:36:14
【问题描述】:

我向 VSCode 提交了这个 Bug Report,因为我不想在 NPM 分发中包含这些文件,所以我已经从编译中排除了 *.spec 文件。

我仍然希望看到它们通过 VSCode 工具正确编译。

就目前而言,VSCode 智能感知报告无法导入路径上可用的导入,这会引发很多错误,将项目规范文件涂成红色等。

在我的报告中,我说过 VSCode 错误报告和编译应该是两个独立的问题。 VSCode 不能同时检查文件是否正确并从编译中排除它。两者并不相互排斥。

我已要求 VSCode 进行分类,但到目前为止,问题仍未解决,我想看看其他人在 SO 上的情况。是错误还是报告中的结论正确?

【问题讨论】:

  • 主要基于意见的问题在 SO 上是题外话。
  • 这是一个关于工作流程的问题。换句话说,如果有一个 tsconfig 文件在 80% 的情况下是有意义的,而不管排除如何,那么这是正确的选择。对此进行小组讨论有助于使 VSCode 对我们所有人都更好。

标签: javascript node.js typescript visual-studio-code tsconfig


【解决方案1】:

IIUC,目前 VS Code 使用一种语言服务实例来处理 tsconfig.json 未包含的文件(包括 tsconfig.json 根本不存在的情况),默认编译器选项,当 tsconfig.json 存在时,它使用第二语言服务实例,该实例急切地加载所有包含的文件并使用指定的编译器选项。我相信您提议当tsconfig.json 存在时,第一个语言服务实例应该使用tsconfig.json 中的编译器选项,但具有与现在相同的文件加载行为。这将略微增加复杂性,老实说,当tsconfig.json 存在时编辑从tsconfig.json 中排除的文件的体验仍然会非常混乱:您的一些文件会看到全局定义而其他文件不会,并且“find所有参考资料”将为您提供部分结果。在我看来,您的提议似乎是现状的一个合理替代方案,但我不明白您为什么要与 VS Code 团队争吵,而不是仅仅创建两个 tsconfig.json 文件,这是明确的并为您提供统一的编辑你真正想要的体验。 (或者您是否建议应该有一个单一的语言服务忽略排除项并急切地加载项目目录下的所有.ts(x?) 文件?我很确定这不会飞,因为它会在许多情况下导致问题。)

【讨论】:

  • 嗨,马特 - 我明白你在说什么。根据tsconfig 中的exclude 选项,VSCode 将文件解释为完全从项目中排除,我只想排除文件输出到我的 dist 目录。我仍然认为 VSCode 开始在整个项目中绘制错误的副作用是不正确的。它也应该对排除的文件使用相同的 tsconfig 文件,如果作者想要另一种行为,那么他们应该配置它。换句话说我们应该只需要创建另一个 tsconfig 文件是绝对必要的,而不仅仅是 hack ...
  • 围绕这个问题。 VSCode 不是打字稿的一部分,所以如果我们想从 VSCode 提供的智能感知中排除文件,我认为应该在本地 VSCode 配置文件中完成,否则 tsconfig 中的所有配置都应该应用于 ts 文件。
  • 我可以想象相反的论点:“为什么 VS Code 将编译器选项从我的tsconfig.json 应用到我的Gulpfile.ts,因为这些选项只对我的常规源文件有意义? "还有更多情况需要考虑:如果工作空间根目录中没有tsconfig.json,但子目录中有一个,它是否适用于该子目录之外的排除文件?但是这个讨论似乎没有意义,因为你不会说服 VS Code 团队,而且你可能想要统一的“查找所有引用”,这需要两个 tsconfig.json 文件。
  • 也许我们想将项目文件导入Gulpfile.ts,使用tsconfig.json 中的路径设置解决?这似乎是有道理的。我们希望从 dist 输出中排除 Gulpfile.ts,但仍然能够解析其中的项目特定文件。关于说服团队,你可能是对的。我只希望对话/理性有意义,设置方法有意义。
  • 我认为关闭问题没有错。它表明您的提议不太可能被接受,但如果有足够的用户反馈,也并非不可能; VS Code 团队决定关闭的阈值,使打开/关闭的分类对他们最有用。如果其他用户受到影响,我希望他们仍然“点赞”问题或评论,或者如果当前问题被诸如 TypeScript 存储库的机器人自动锁定,则打开一个新问题。在这一点上,我什至不清楚 mitchellsimoens 是否有同样的问题。
猜你喜欢
  • 2021-10-23
  • 2022-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-28
  • 2023-04-04
相关资源
最近更新 更多