2016-04-15 18 views
2

現在、Web-Essentials(Visual Studio 2015用)では、ソリューションエクスプローラの.tsファイルをドラッグしてオープン.tsファイルにドロップすると、参照パスが自動的に作成されます先頭に挿入:Visual StudioでTypeScript用のドラッグアンドドロップES6インポート

/// <reference path="../playback/key.ts" /> 

これは、プロジェクトは内部モジュール(名前空間)を使用して開発されているときに細かいですが、外部に行くとき、事実上無用です。代わりにES6 import statementが生成されるように私はそれを作ることができますか?それは素晴らしいだろう。以下のような:それは結局のところ

import {} from "../playback/key"; 

答えて

0

、私たちが見ていることは、組み込みのWebベースのEssentialsの機能。私はfeature-requestを提出して、これを利用できるようにしました、うまくいけば近い将来です。一方


、次 Visual Commanderオートメーションスニペ​​ットは輸入をES6するすべての参照を置き換えることができます。

using EnvDTE; 
using EnvDTE80; 
using System.Text.RegularExpressions; 

public class C : VisualCommanderExt.ICommand 
{ 
    // Called by Visual Commander extension. 
    public void Run(EnvDTE80.DTE2 DTE, Microsoft.VisualStudio.Shell.Package package) 
    { 
     TextDocument doc = (TextDocument)(DTE.ActiveDocument.Object("TextDocument")); 
     var p = doc.StartPoint.CreateEditPoint(); 
     string s = p.GetText(doc.EndPoint); 

     p.ReplaceText(doc.EndPoint, this.ReplaceReferences(s), (int)vsEPReplaceTextOptions.vsEPReplaceTextKeepMarkers); 
    } 

    // Converts "reference" syntax to "ES6 import" syntax. 
    private string ReplaceReferences(string text) 
    { 
     string pattern = "\\/\\/\\/ *<reference *path *= *\"([^\"]*)(?:\\.ts)\" *\\/>"; 

     var regex = new Regex(pattern); 
     var matches = Regex.Matches(text, pattern); 

     return Regex.Replace(text, pattern, "import {} from \"./$1\";"); 
    } 
} 

この(読みやすく、ダブルバックスラッシュなし)で置き換える実行するために使用する正規表現を:

\/\/\/ *<reference *path *= *"([^"]*)(?:\.ts)" *\/> 

このコードは、効果的に非常に、現在アクティブなドキュメントにES6の輸入にすべての参照のコメントを変換しますが便利です。


既知の問題:

  • それは、対応する行に他のテキストが先行する場合のVisual Studioによって認識されないreferenceタグを含むコメントが、それはまだこのスニペットに置き換えられ
  • referenceタグの後の追加テキストが有効ですが、置換後にはもはやコメントではないため、構文エラーが発生します。

.tsファイルがドラッグアンドドロップされたときスニペットはウェブのEssentialsによって生成された基準タグで使用される場合、これらの問題のいずれも関連している。)

関連する問題