2013-06-11 66 views
0

我们目前正在评估Typescript,整体印象非常好! 我们也使用Webessentials,并选中了将所有创建的文件添加到TFS的选项。但是现在我们遇到了一个问题。 如果我们有一个引用'class2.ts'的Typescript文件'class1.ts'(由/// <reference path="class2.ts" />),当我保存class1.ts时,出现“无法写入文件class2.js”错误。很显然,编译器会尝试编译class1 引用的class2,但只有class1.ts被检出。Typescript:如何在保存时创建定义文件?

对此的最佳解决方案可能是引用class.d.ts而不是class2.ts但我无法找到一种方法来自动创建保存定义文件。

有没有办法做到这一点?

回答

0

当我保存class1.ts时,出现“无法写入文件class2.js”错误。很显然,编译器会尝试编译class1和引用的class2,但只有class1.ts被检出

我的建议是检出class2.ts。

如果你仍然想自动生成.d.ts为您的文件,你可以使用一个咕噜任务: https://npmjs.org/package/grunt-typescript

grunt.initConfig({ 
    ... 
    typescript: { 
     base: { 
     src: ['path/to/typescript/files/**/*.ts'], 
     dest: 'where/you/want/your/js/files', 
     options: {    
      declaration: true, 
     } 
     } 
    }, 
    ... 
}); 
+0

要检出class2.ts,也意味着递归地,我可能会以检出所有文件结束。这是我想避免的。 – Jer

+0

如果您没有检出,那么由于缺少生成的js,应用程序不会工作吗? – basarat

2

我有同样的问题时,开始在TFS环境打字稿工作。 尽管你的问题是要求一种在保存时自动生成定义文件的方法,但你真正的问题与TFS有关。

解决您的实际问题:

TFS默认工作与服务器的工作空间,这意味着任何编辑本地文件要求退房要在服务器上执行。出于这个原因,所有本地文件都被锁定,需要显式检出。如果您打开文件并对其进行编辑,Visual Studio会自动为您执行此操作,但对于未直接编辑的参考文件,Visual Studio不会这样做。

解决方案是配置TFS与本地工作区一起工作,您可以为您提供其他好处,例如不包含在“待定更改”中的重新创建的.js文件,其内容没有任何更改。

我建议阅读这个简单的一篇文章,非常清晰,比较本地VS服务器工作区: http://blogs.msdn.com/b/willy-peter_schaub/archive/2011/11/30/team-foundation-server-trying-to-understand-server-versus-local-workspaces.aspx

当你设置你只会影响您的计算机的本地工作区,因此需要在TFS服务器没有变化。

要建立本地工作区在你的机器:

  1. 的Visual Studio /文件/源控制/高级/工作区
  2. 选择一个工作区,点击编辑;
  3. 在新的屏幕上单击
  4. “高级”将位置更改为“本地”

TFS set up local workspace

这些更改所有本地文件将可写后,您就可以脱机工作没有当再次连接到服务器时需要使用解决方案“上线”,因为所有本地更改(即使在VS之外)都将被TFS检测到。 您还将在Windows资源管理器的上下文菜单中添加TFS条目,这可能会有所帮助。

解决,你并不真正需要解决的问题 - 自动生成定义文件:

你并不需要解决这个问题,但为了保持连贯与问题,也许这可以帮助对于未来出现这个问题的其他人。

要在保存特定文件时强制执行某个操作,可以将自定义工具与您的文件(Visual Studio/Solution Explorer/Properties(F4)/ Custom Tool)相关联,然后创建一个执行的构建目标TypeScript编译器生成定义。

是这样的(伪代码,未测试):

<Target Name="GenerateTypeScriptDeclarationFile"> 
    <Exec Command="tsc --definition @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" /> 
</Target> 

见我的回答this question关于如何使用定制工具以打字稿和MSBuild的更多细节。

相关问题