4

最近我的团队注意到,编译VS 2013下的TypeScript文件的输出与VS 2015下编译的输出不同,因为每个函数末尾的自执行函数圆括号样式略有不同。TypeScript括号格式化

的区别如下: enter image description here

这是烦人,因为我们不得不经常互相覆盖的变化,否则不必恢复变更到所有的打字稿编译的.js和.js.map的每次我们建立一个文件。

一旦我们的整个团队更新到VS 2015,问题就会消失,除了我们团队中的每个人每次在自己的机器上进行构建时都会看到这些细微变化。我们都运行安装了TypeScript 1.8.6.0的Visual Studio 2015。

我们通过Project Properties - > TypeScript Build下的选项来验证所有设置都一样,而且它们都是。我们还检查了两台机器之间的工具 - >选项 - >文本编辑器 - > TypeScript中的所有内容都是相同的。

.csproj文件设置为<TypeScriptToolsVersion>1.8</TypeScriptToolsVersion>,这在两台机器之间显然是相同的。

我们唯一的区别是,机器编译不同的人导出了他的VS 2013设置,并将它们导入到VS 2015中,而我们其他人刚刚在2015年开始新鲜,即使我们已经验证了所有相关的设置是相同的。

是否有一些隐藏的设置或配置文件可能导致TypeScript编译器的行为与我们缺少的行为不同?

+3

我认为建议的模式是不检查编译的文件... –

回答

2

如果您使用的是TypeScript,则无需登记.js.js.map文件。您也不希望通过typingstsd登记安装的任何类型。

一般而言,您希望签入允许某人运行应用程序的最少数量的文件。您不应该签入自动生成的文件。

+0

这并不是那么简单,它应该与是否检查node_modules的决定相同。有一些优点和缺点的文章。主要的意思是,现在没有类型的版本,你想稳定你的js文件的版本。而且你总是希望能够使用它们,即使有人弄乱了软件包,甚至在npm停机的情况下也是如此 –

+0

在我们的例子中,我不确定是否设置了编译服务器来编译TypeScript文件。另外,他们必须包含在解决方案中,否则他们将无法发布,是否正确?看起来很奇怪的是,解决方案中包含的文件却没有签入SCM回购协议。无论哪种方式,我想解决根本原因,而不是解决它。 –

+0

@SlavaShp。我相信你可以指定版本的提交版本,但我确实认为它不像我所说的那样黑白。 布拉德,我不能给你一个你的具体问题的答案。根据我的经验,我通常会设置构建服务器来模拟我在本地尽可能接近的构建过程。这意味着编译TS文件。 – wjohnsto