Typescript TSC CommandLine - 防止TSC观看

时间:2016-07-12 09:25:42

标签: tsc

首先:我知道命令行中tsctsc -w之间的区别。这不是问题,而是一种特殊的情况:

在VS Code的tsconfig中,我通过设置"watch":true启用了观察者。这绝对是想要的。但现在问题是:

我有一些脚本应该安装整个VS Code项目环境(所以特定项目本身),并希望项目最初由tsc编译。但现在它在监视模式下编译它,因为tsconfig说这样做。我可以在这里例外吗?当最初在bat文件中编译时,我希望tsc不会自动将watch选项设置为true,但是如果tsconfig中的watch选项打开或关闭,则在编译时进行编译。

有没有办法实现这个目标?

谢谢!

2 个答案:

答案 0 :(得分:0)

我终于通过简单地使用windows的重命名命令解决了它:

rem Rename the tsconfig to prevent the tsc-task from watching
rename "tsconfig.json" "temp-hide.json"
rename "setup-config.json" "tsconfig.json"
tsc
rem Undo renaming since the task finished
rename "tsconfig.json" "setup-config.json"
rename "temp-hide.json" "tsconfig.json"

在我的安装过程中,我将tsconfig.json重命名为temp-hide.json(因为tsconfig包含选项watch) 然后将setup-config.json重命名为tsconfig.json,以便这个文件 而是用来代替。

当所有文件都被重命名后,我终于执行命令tsc,和 执行该命令后,我将所有内容重命名为原始版本 文件名。

答案 1 :(得分:0)

您可以比基于重命名的解决方案做得更好。现在,问题在于,当您调用tsc时,-w--watch)标记会被compilerOptions.watch中指定的tsconfig.json值覆盖(位于调用与tsc脚本相同的目录。我们将使用TypeScript 2.1中引入的功能:configuration inheritance

基本配置,tsconfig.json(一次性模式)

写下这里应该有的典​​型行为。这将是我们的基础(默认)tsconfig文件。

{
  "compilerOptions": {
    "watch": false,
    "module": "commonjs",
    "target": "es6",
    "sourceMap": true,
    "inlineSources": true,
    "strictNullChecks": true
  }
}

扩展程序配置tsconfig_w.json(监视模式)

现在我们为它编写一个扩展名,其中一个属性是更改:compilerOptions.watch被覆盖为true

{   
    "extends": "./tsconfig.json",
    "compilerOptions": {
        "watch": true
    }
}

tsc

的命令行调用

之前,您在不提供任何进一步参数的情况下调用tsc。现在,您应该明确指定它应该从哪个tsconfig读取。

  • 一次性:tsc --project tsconfig.json(这是它将使用的默认文件,但让我们明确表示。)

  • 观看:tsc --project tsconfig_w.json

注意:TypeScript 1.8中引入了--project标记。

为方便起见,可选附加:package.json

我倾向于将这些作为方便的脚本写入我的package.json

"scripts": {
    "lib": "./node_modules/.bin/tsc  --project tsconfig.json",
    "libw": "./node_modules/.bin/tsc --project tsconfig_w.json"
}

然后,您只需运行npm run libnpm run libw,具体取决于您需要的脚本。

注意:我已经在本地指定了TypeScript的路径而不是全局路径(因为我还没有全局安装它)。