【问题标题】:tsc --watch not updating files when outDir present in tsconfig.json当 tsconfig.json 中存在 outDir 时,tsc --watch 不更新文件
【发布时间】:2018-05-31 01:38:27
【问题描述】:

我正在尝试使用 Typescript 编写 nodejs 命令行应用程序,并且我有以下 tsconfig 文件:

{
"compilerOptions": {
    "module": "commonjs",
    "outDir": "dist"
},
"include": ["src/*.ts"]
}

当我使用tsc 时,一切都按预期工作(*.js 文件出现在 dist 文件夹中)。

但是,当我运行tsc -w 时,js 文件最初是在 dist 文件夹中创建的,但在我更改任何 ts 文件时都不会更新。 Tsc 似乎可以很好地查看和编译更改,但无法编写实际的 js 文件。

4:23:04 PM - File change detected. Starting incremental compilation...
4:23:04 PM - Compilation complete. Watching for file changes.

当我从 tsconfig 中省略 outDir 参数时,一切正常(更改 ts 文件时正在更新 js 文件)。这不是一个理想的解决方案,因为我希望 js 输出位于 dist 文件夹而不是 src 中。

当我跳过使用 tsconfig.json 文件并直接运行它时,它也可以正常工作:

tsc -w --outDir dist src/app.ts

我做错了吗?

在win10,tsc 2.6.2,节点7.9.0上运行

【问题讨论】:

  • 使用tsc 和节点的特定版本似乎可以在 macOS High Sierra 中正常工作。
  • 谢谢。我也在Mac下测试过它确实有效。所以这是一个窗口问题。

标签: typescript tsc tsconfig


【解决方案1】:

获取最新的夜间版本:

npm install -g typescript@next

【讨论】:

    【解决方案2】:

    对我来说,这是通过在 WebStorm 中禁用选项'使用“安全写入”(首先将更改保存到临时文件)'来解决的:

    启用后,IDE 会删除和重命名文件,这似乎使tsc --watch 感到困惑。

    (要查看它在做什么,请使用tsc --extendedDiagnostics --listEmittedFiles。扩展日志in Arnelism's GitHub issue。)

    【讨论】:

      【解决方案3】:

      我想我已经弄清楚了。

      Typescript 2.6 带有新的 --watch 实现。降级到 2.5.3 时一切正常。

      所以这似乎是在特定条件下出现的新 --watch 事物的问题(win10,在 tsconfig 中使用 outDir)。

      在 Typescript 问题跟踪器中将其报告为错误 - https://github.com/Microsoft/TypeScript/issues/20739

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-02
        • 2017-09-05
        • 2018-01-21
        • 2022-10-14
        • 1970-01-01
        • 2021-01-24
        • 2017-07-31
        • 2022-11-08
        相关资源
        最近更新 更多