typescript-lsp について
clickhouse-js ワークスペースで TypeScript 言語サーバーを使うためのスキルです。対話的なコード解析を行う開発者向けに、起動方法、設定検出、確認済みの LSP 機能を説明します。
主な機能
- 01stdio 経由で LSP を起動
- 02最寄りの tsconfig.json を自動選択
- 03ホバー情報と定義を取得
- 04参照とワークスペースシンボルを検索
- 05補完とプッシュ診断を提供
活用シーン
- 01推論されたシグネチャと JSDoc の確認
- 02ワークスペース間の定義への移動
- 03シンボルと参照の検索
- 04ファイル診断と補完の取得
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ clickhouse/ clickhouse-js --skill typescript-lspインストール後、Claude Code で/typescript-lspを入力して読み込まれたか確認します。
詳細
clickhouse-js の TypeScript Language Server
typescript-language-server はルートの devDependency として宣言されているため、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 でフレーム化)を stdio 経由で使用します。追加の設定は不要です。各 packages/* ワークスペース、tests/clickhouse-test-runner、examples/node、examples/web にはそれぞれ独自の tsconfig.json があり、サーバーは開いたファイルごとに最も近いものを自動的に選択します。
プロトコルの要点
rootUri/workspaceFoldersにリポジトリのルートを指定してinitializeを送信し、その後initialized通知を送信します。- 照会したいファイルすべてについて、ファイル全体のテキストを含む
textDocument/didOpenを送信します(サーバーは依存関係を自動でディスクから読み取ります。開く必要があるのは、位置を照会するファイルだけです)。 - 位置は 0 始まりです(行と文字)。
検証済みの機能(typescript-language-server 5.x、TS 6.x)
| リクエスト | 備考 |
|---|---|
textDocument/hover | 推論されたシグネチャ全体と JSDoc マークダウンを返します |
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 対応