通过API实现TypeScript LanguageService w / plugins

时间:2018-06-06 22:15:25

标签: typescript typescript-compiler-api

如何使用TypeScript编译器API通过语言服务插件实例化languageService?我认为createLanguageService可以解决这个问题,但似乎并没有加载插件。

这是否在某个地方包裹在tsserver中?理想情况下,我想在进程中运行所有内容。是否有某种ServerHost我需要实例化以languageService访问require() node_modules?

我的动机:我想以编程方式从我正在构建的CLI工具中将插件快速修复程序应用于代码库。

1 个答案:

答案 0 :(得分:0)

我想我明白了。 import * as ts from 'typescript/lib/tsserverlibrary';(在创作插件时使用相同的导入)并创建new ts.server.ProjectService。然后通过projectService.openClientFile打开源文件,这将使服务自动获取您的tsconfig并创建一个新的ConfiguredProject,您可以通过各种方法检索它。然后是configuredProject.getLanguageService()

您必须设置serverHost.require,否则服务无法加载插件,并且会跳过它们。我从src/server/server.ts

复制了TS的内部实现

我遗漏了很多混乱的细节,但这些都是步骤。 Intellisense会告诉您需要做的其他事情。