VS2017:多个打字稿文件夹; TFS源控制;并发布到IIS

时间:2017-06-09 00:30:29

标签: visual-studio typescript iis tfs visual-studio-2017

我正在使用包含许多项目的解决方案。一个项目是ASP.Net MVC项目,在~/Scripts内包含两个具有TypeScript文件的文件夹。

~/Scripts/TSProj1/typescript/Main.ts
~/Scripts/TSProj1/typescript/Sub1.ts
~/Scripts/TSProj1/typescript/Sub2.ts
~/Scripts/TSProj1/tsProj1.js
~/Scripts/TSProj1/tsProj1.js.map
~/Scripts/TSProj2/typescript/Main.ts
~/Scripts/TSProj2/typescript/Sub1.ts
~/Scripts/TSProj2/typescript/Sub2.ts
~/Scripts/TSProj2/tsProj1.js
~/tsconfig.json

以前,我只有一个TypeScript子项目,它没问题,但自从我介绍第二个项目以来,我和我的团队一直有一些问题。我真的需要一个解决方案。

现在,我知道目前Visual Studio does not support多个tsconfig.json个文件,tsconfig.json也不支持multiple configurations

就像我自己的创可贴解决方案一样,我在tsconfig.json文件中都有两个配置,其中一个配置总是被注释掉:

{
  "compilerOptions": {
    "outFile": "Scripts/TSProj1/tsProj1.js"
  },
  "files": [
    "Scripts/TSProj1/typescript/Main.ts",
    "Scripts/TSProj1/typescript/Sub1.ts",
    "Scripts/TSProj1/typescript/Sub2.ts"
  ],
  "compileOnSave": true
}
/*
{
  "compilerOptions": {
    "outFile": "Scripts/TSProj2/tsProj2.js"
  },
  "files": [
    "Scripts/TSProj2/typescript/Main.ts",
    "Scripts/TSProj2/typescript/Sub1.ts",
    "Scripts/TSProj2/typescript/Sub2.ts"
  ],
  "compileOnSave": true
}
*/

我可以评论/取消评论,具体取决于我当时要构建的子项目。有一段时间,我认为这是有效的,但现在我似乎也在注释tsconfig.json条目的TypeScript代码上遇到编译错误。另一种现在的创可贴解决方案是在编译期间从项目中排除.ts文件。

然而,我需要某种可行的解决方案。它给我带来了很多问题,但对于那些正在研究这个解决方案的人来说尤其如此。

我提到过我遇到的一些问题:

  • 正如我所说,我需要能够编译多个单独的 TypeScript文件夹。评论tsconfig.json的一部分似乎有效,但现在,神秘地,它不再有效,而tsconfig.json中未包含的子项目现在会出现编译错误。
  • 通常,编译不会生成新的.js文件。我怀疑这是因为Visual Studio因为某种原因检查了文件并将其设置为只读。我注意到,当我打开命令提示符时,tsc.exe抱怨它无法写入输出.js文件。有时,源映射也会发生这种情况。要解决此问题,我会删除.js.js.map文件,但我不应该这样做。
  • 发布时,我注意到.js文件没有被推送到Web服务器。我一直在手动复制文件。我不知道为什么会这样,因为.js文件是项目的一部分。

我怀疑其中一些问题可能与嵌套(或缺乏嵌套)有关。例如,SASS文件将在其下嵌套相应的.css文件,并在其下嵌套.css.min文件。这使得Visual Studio了解这些文件是相关的,并且它的行为也相应。可能应该告诉Visual Studio .js.map文件属于.js文件,并且.js文件对应于typescript源。我不确定如何实现这一点。

我真的需要解决这些问题的方法。他们不一定非常方便我,但他们绝对不应该影响团队中的其他人。我不介意解决方案是否以某种方式从命令行手动调用tsc.exe,但是检入TFS并发布必须有效。

谢谢。如果可以解决这个问题,我将非常感激。

0 个答案:

没有答案