如何在后期构建事件中启动Typescript编译

4
我有一个后构建事件,它在我的一些控制器上运行反射代码,以生成我的路由在typescript中的定义。如果我在csproj中激活TypescriptCompile选项,则如果任何Typescript文件不正确,DLL生成将失败。然后我的后构建事件将失败,因为dll不存在。
我想实现以下模式:
1. 不使用typescript编译来构建我的dll 2. 运行我的后构建事件以生成带有路由定义的typescript文件 3. 运行另一个后构建事件来编译/验证ts文件,如果它们不正确则失败
前两个步骤都可以正常工作,但我卡在了最后一步。找不到在csproj文件上运行typescript编译的命令行。

你的项目中是否包含 tsconfig.json 文件? - yuxhuang
不行,但如果我不必为每个新的ts文件添加一个新条目,我可以包含一个。 - Dreeco
1个回答

1
假设在构建后事件中,TypeScript源文件生成在.\tsc-src下。并且您正在使用TypeScript 2.0。
您可以在tsc-src文件夹中包含一个tsconfig.json文件,其内容如下:
{
  "compilerOptions": {
    "baseUrl": "",
    "declaration": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": ["es6", "dom"],
    "mapRoot": "./",
    "module": "es6",
    "moduleResolution": "node",
    "outDir": "../tsc-dist",
    "sourceMap": true,
    "target": "es5"
  }
}

假设您的工作目录在项目文件夹中,如果您已经安装了TypeScript,并且tsc在您的PATH中,您可以添加一个新的后构建事件命令tsc -p ./tsc-src来编译TypeScript源文件。
根据您的要求,您可能需要将outDir字段更改为outFile字段以发出单个JavaScript文件。这里是pointer到文档的链接。

我回答得很晚,还没有找到时间尝试您的解决方案。但是似乎您的解决方案会影响所有我的ts / js文件的层次结构和组织。我正在寻找一种基于csproj的方法来保持相同的组织方式。您的解决方案是否有办法让我所有的csproj ts文件将js输出到具有相同名称和相同文件夹的js文件中?(我指的是["outDir": "../tsc-dist",]指令) - Dreeco
@Dreeco 我很好奇你为什么希望ts文件在同一个文件夹中?你也将它们检入到你的代码库中吗? - yuxhuang
@Dreeco 我认为你可以简单地删除 outDir 字段来实现你的目标。不过我从未使用过没有 outDiroutFile 选项的 tsconfig.json - yuxhuang
是的,它们在存储库中。问题在于生成的 ts 文件(包含路由)不是项目中唯一的 ts 文件,还有很多前端代码。我会尝试一下 :) - Dreeco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接