【问题标题】:Is it possible to compile Typescript files locally but not on the build server?是否可以在本地编译 Typescript 文件但不能在构建服务器上编译?
【发布时间】:2015-04-07 15:42:49
【问题描述】:

我已将 Typescript 添加到我的构建过程中,但我收到了 Write to file failed 错误,因为目标 js 文件是只读的,这是因为我在 TFS 中包含了发出的 js 文件。

我知道我可以从 TFS 中删除 js 文件并始终即时生成,但我不想这样做,因为我想将它们包含在项目中,并且如果我这样做,到构建服务器的部署将失败使用不在 TFS 中的文件。

我可以use a pre-build step to remove the Read Only attributes 但这似乎很笨拙。

我真正想要的是包含 js 文件并在构建时预编译,但只在我的本地开发机器上而不是在构建服务器上。我什至会很高兴在保存时编译它们而不是在构建时。但我找不到任何方法来完成其中任何一个。

【问题讨论】:

  • 我认为你应该努力让你的构建服务器编译打字稿文件而不​​会失败。这是需要解决的问题。
  • 它失败了,因为该文件是只读的,这就是 TFS 的工作方式,没有黑客可以绕过它。但是现在我开始认为我不应该首先将 js 文件包含在 TFS 中。
  • 是的,不要包含 js 文件。真的没必要。

标签: visual-studio msbuild typescript build-server


【解决方案1】:

我知道您说您希望将它们包含在您的项目中,这就是您想要将 js 文件包含在版本控制 (TFS) 中的原因,但 IMO 这不是采用的方法,出于同样的原因您不这样做检查你的 dll。

对于 TypeScript,*.ts 文件是您的源代码,*.js 文件是您的编译输出,无论是 MsBuild 还是 gulp/grunt,您的构建过程都可以轻松复制它们。

如果您使用捆绑/缩小库,那么您不必担心,因为其中包含的文件基于文件结构而不是项目结构。您可以简单地在必要的包中包含必要的文件/目录。

我知道这可能不是您要寻找的答案,但我觉得它在如何处理来自 ts 源代码的 js 文件的输出方面具有潜在的解决方案。

【讨论】:

  • 看完你的回答后,我想我相信你是对的。感谢您的详细解释。
  • 这是一个轻微的思维转变,因为我们中的许多人习惯于在我们的项目中包含我们的 JS 文件,因此即使在迁移/升级/更改为 TypeScript 之后也觉得必须包含它们。
  • 通过 web.config 中的适当条目,服务器可以在请求 TS 文件时提供 JS 文件。这允许您在标记中引用 TS 文件,从而通过指示真实的源代码来消除维护陷阱。
猜你喜欢
  • 2014-01-24
  • 2012-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多