typescript - tsc-watch 会使用 TSC_NONPOLLING_WATCHER 吗?
我正在进行微服务集成项目。我同时运行 8 个 TypeScript 服务,使用 tsc-watch --preserveWatchOutput --onSuccess 'node build/index.js'。
这些进程消耗了我 70% 的 CPU,即使我完全没有编写任何源代码。我猜测有一些变化检测正在进行轮询,并且我在谷歌上搜索得知,将环境变量 TSC_NONPOLLING_WATCHER 设置为 "1" 可以停止轮询。
这是提示的来源:https://medium.com/@julioromano/writing-typescript-on-a-laptop-this-might-improve-your-battery-life-f503dd16f019
然而,它似乎完全没有效果。此外,作者提到的是“tsc -w”,而不是 tsc-watch。我不太明白 tsc -w 和 tsc-watch 之间的区别是什么。
我会感激任何帮助。
答案#1
更新 1 不需要更改 tsconfig.json
我遇到了类似的问题,并打算通过正确设置环境变量 TSC_NONPOLLING_WATCHER="1" 来解决它。
在我的情况下,我不得不通过调整 .zprofile 来进行
export TSC_NONPOLLING_WATCHER="1"
你可以通过在命令行中运行 echo $TSC_NONPOLLING_WATCHER 来测试它。
替代
如果这没有帮助,尝试将 tsconfig.json 文件设置为以下内容:
"watchOptions": {
// Use native file system events for files and directories
"watchFile": "useFsEvents",
"watchDirectory": "useFsEvents",
// Poll files for updates more frequently
// when they're updated a lot.
"fallbackPolling": "dynamicPriority"
}
这些选项来自: https://www.typescriptlang.org/docs/handbook/configuring-watch.html,我强烈建议在进行任何更改之前阅读它。
tsc 与 tsc-watch
关于 tsc -w 和 tsc-watch 的区别,GitHub 上的项目声称,我引用一下:
- tsc-watch 正在使用当前安装的 TypeScript 编译器。
- tsc-watch 并没有改变编译器,它只是添加了新的参数,编译过程保持不变,其他所有参数也都相同。
所以 tsc 的所有设置在 tsc-watch 中也应该像你这种情况一样工作。
