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\";");
}
}
5 回答
有传言说它支持tsconfig.json(好吧,比谣言更好) . 这将使我们能够使用所有文件作为参考 .
您的功能是创建一个自动导入所有常用的第三方库到打字 . 也许自动扫描文件并创建一个要收集的列表 . 如果只是通过代码(交互式)直接使用tsd快速添加其中几个,这不是很好吗?
这刚刚在version 1.18发布 .
从发行说明:
自动导入JavaScript和TypeScript
使用JavaScript和TypeScript的自动导入加速编码 . 建议列表现在包括当前项目中的所有导出符号 . 刚开始输入:
如果您从其他文件或模块中选择其中一个建议,VS Code将自动为其添加导入 . 在此示例中,VS Code将
Hercules
的导入添加到文件的顶部:自动导入需要TypeScript 2.6 . 您可以通过设置
"typescript.autoImportSuggestions.enabled": false
来禁用自动导入 .tsconfig.json文件中的files属性允许您在整个项目中设置引用导入 . Visual Studio Code支持它,但请注意,如果您使用的是特定的构建链(例如tsify / browserify),则在编译项目时可能无法正常工作 .
我知道Visual Studio的解决方案(不是Visual Studio Code,我使用的是2015社区版,这是免费的),但它需要一些设置和编码 - 但是,我发现结果是足够的 .
基本上,在Visual Studio中,使用Web-Essentials扩展时,可以将
.ts
文件拖入活动文档以自动生成相对引用路径注释:我们当然可以将其擦除,因为它是我们需要的
import
语句,而不是参考注释 .出于这个原因,我最近为Visual Commander编写了以下命令片段,但它也应该很容易适应其他用例 . 使用Visual Commander,将所需的导入拖动到打开的文档中,然后运行以下宏:
运行此代码段时,活动文档中的所有引用注释都将替换为
import
语句 . 上面的例子转换为:我相信名为_547222的插件完全符合您的意思:https://marketplace.visualstudio.com/items?itemName=pmneo.tsimporter .
使用它您可以真正使用Ctrl Space来选择您想要导入的内容 .
您可以从Ctrl Shift X菜单中找到并安装它,或者只需在使用Ctrl P打开的快速打开菜单中粘贴
ext install tsimporter
即可 .