如何在使用WSL时在VSCode上运行TypeScript增量编译(tsc -w)?

lp0sw83n  于 2023-05-08  发布在  TypeScript
关注(0)|答案(1)|浏览(200)

我正在尝试学习TypeScript,我了解了手表功能(tsc -w)。我在一台Windows机器上,我通常更喜欢使用VSCode和Windows Linux子系统(WSL)。我知道这是一个奇怪的设置,但它通常很容易通过使用VSCode上的WSL扩展。
我的问题如下:

  • 当我使用VIM或任何其他已安装的Linux编辑器编辑我的typescript文件时,tsc watch在WSL上工作
  • 当使用任何windows编辑器(VSCode,记事本等)写入我的typescript文件时,tsc watch无法检测到更改
  • 即使我通过VSCode上的WSL连接运行tsc watch,它也不会拾取任何更改

我承认我不知道tsc watch是如何实现的,但我不确定为什么它不能只在通过Windows编辑器修改文件时才拾取对文件的更改。无论我在哪里第一次运行'tsc -w'命令,Typescript都能正确地转换,甚至正确地显示错误,但它不会接受这些更改,除非它们是通过ubuntu编辑器保存的。如果有人知道为什么会发生这种情况,请让我知道。

lf5gs5x2

lf5gs5x21#

我在tsconfig.json中试用了watchOptions之后找到了解决方案。
watchFilewatchDirectory的默认参数是“usefsevents”,使用文档描述为“(默认值):尝试使用操作系统/文件系统的本机事件进行文件更改”。将这些参数值更改为“dynamicPriorityPolling”、“fixedPollingInterval”或“priorityPollingInterval”解决了我的问题。其他选项使用文件系统的本地事件来侦听项目目录或tsconfig.json中列出的文件中的更改。如果您在WSL中运行tsc -w,但在Windows编辑器中编辑文件,Linux的本地事件侦听器不会告诉tsc文件更改,因此我使用一个轮询选项。
我的解决方案示例:

使用的文件:

相关问题