mcpField
T
typescript-lsp

typescript-lsp

github.com/clickhouse开发33051 次安装1 天前更新
代码仓库

关于 typescript-lsp

为 clickhouse-js 工作区提供 TypeScript 语言服务器使用说明,面向需要交互式代码查询的开发者。说明了启动方式、项目配置发现及已验证的 LSP 能力。

主要功能

  1. 01通过 stdio 启动 LSP
  2. 02按文件自动选择 tsconfig.json
  3. 03查询悬停信息与定义
  4. 04查找引用和工作区符号
  5. 05提供补全与推送诊断

适用场景

  1. 01查看类型签名和 JSDoc
  2. 02跨工作区包跳转到定义
  3. 03查询符号及其引用
  4. 04获取文件诊断与代码补全

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/clickhouse/clickhouse-js --skill typescript-lsp

安装后在 Claude Code 中输入/typescript-lsp确认已加载。

详细介绍

clickhouse-js 中的 TypeScript 语言服务

typescript-language-server 声明为根目录的开发依赖项,因此运行 npm install 后(参见 setup 技能),即可通过 npx 使用,并且会使用工作区本地的 typescript(6.x)编译器,与 CI 完全一致。

该服务(6.x)要求 Node.js >= 22.22.2,高于仓库要求的 Node 20 最低版本;在 Node 20 上,npm install 只会发出警告,但该服务不受支持。

启动服务

在仓库根目录运行:

npx typescript-language-server --stdio

它通过标准输入/输出使用 LSP(JSON-RPC,采用 Content-Length 分帧)。无需额外配置:每个 packages/* 工作区、tests/clickhouse-test-runner、examples/node 和 examples/web 都有自己的 tsconfig.json,服务会自动为每个打开的文件选择最近的配置。

协议要点

  1. 发送 initialize,将 rootUri/workspaceFolders 指向仓库根目录,然后发送 initialized 通知。
  2. 对要查询的每个文件发送 textDocument/didOpen,并附上完整文件文本(服务会自行从磁盘读取依赖项;只需打开要查询位置的文件)。
  3. 位置采用从 0 开始的索引(行和字符)。

已验证的功能(typescript-language-server 5.x,TS 6.x)

请求说明
textDocument/hover返回完整的推断签名和 JSDoc Markdown
textDocument/definition通过源代码解析跨工作区包的定义,而非通过 dist/
textDocument/references在已打开文件所属的项目内查找引用
workspace/symbol例如,查询 ClickHouseClient 可找到类和重新导出项
textDocument/completion提供上下文感知的成员补全
诊断仅推送(textDocument/publishDiagnostics 通知,会在 didOpen 后约 1–3 秒发送)。不支持拉取式的 textDocument/diagnostic 请求(-32601)——请等待推送通知。

提示

  • 如果你的环境提供内置的 LSP/代码智能工具,请将其指向 npx typescript-language-server --stdio,并将仓库根目录设为工作区文件夹。
  • 对于一次性脚本查询,可从 Node 启动服务,使用 Content-Length: <bytes>\r\n\r\n<json> 对消息分帧,并按 id 匹配响应。
  • 完整的工作区类型检查仍需运行 npm run build && npm run typecheck(先构建——部分工作区会导入已编译的 dist/ 输出);LSP 用于有针对性的交互式查询,而非等同于 CI 的验证。

评论

支持 Markdown