VS Code 扩展
nudo-vscode 扩展将 Nudo 的类型推断带入编辑器,提供悬停类型、补全、CodeLens 和内联提示。
安装
- 打开扩展视图(
Cmd+Shift+X/Ctrl+Shift+X) - 搜索 nudo-vscode 或 "Nudo"
- 点击 安装
或从命令行安装:
code --install-extension wmzy.nudo-vscode
激活
打开 JavaScript 文件时扩展会激活。它使用 @nudojs/lsp 包运行 Language Server Protocol(LSP)服务器,提供所有编辑器功能。
文件检测:语言服务器分析 .js、.ts 与 .mjs 文件。出厂默认 nudo.analysis.mode = "exports"(含 export / 侧车 / 指令);可设 "all" 或 "directives"。契约写在 *.nudo.js 侧车与源内 @nudo:refine / @nudo:interface;@nudo:case 是调试 / nudo test 子层。完整语法见指令参考。跨编辑器能力对比:LSP 客户端矩阵。
激活 vs 分析门:activationEvents(onLanguage:javascript / onLanguage:typescript)只负责启动客户端。缓冲区是否被分析由服务端 shouldAnalyzeFile 门决定(目标路径 + nudo.analysis.mode)。JSX/tsx 可激活扩展,但不是 Nudo 分析目标。
发布检查清单(维护者)
完整清单:monorepo 内 packages/vscode/RELEASE_CHECKLIST.md。每次 Marketplace / Open VS X 发布必须覆盖:
- Bundled server 对齐 — 扩展经
scripts/bundle-server.mjs将@nudojs/lsp的dist拷入server/server.js。先构建 monorepo;在扩展 CHANGELOG 记录 bundled lsp 版本。vsix 自包含(运行时不读 monorepo 兄弟路径)。 - 分析默认 + 逃生舱 — 默认
nudo.analysis.mode = "exports"。项目package.json#nudo.analysis.mode:"directives"(保守,诊断档errors)或"all"。发行说明必须写明该默认;会新增诊断的默认翻转按破坏性变更处理。 - 与 tsserver 共存 — Nudo 与内置 TS 服务器并存,不替代 tsc。混合仓库请收紧
nudo.analysis.include/exclude,见共存指南。 - 打包 dry-run —
pnpm --filter nudo-vscode run build && pnpm --filter nudo-vscode run package;本地安装.vsix;在含 export 的.js上确认 hover/诊断;确认命令面板含nudo.selectCase/nudo.interface/nudo.interface.draft/nudo.interfaceEmit。 - Marketplace / Open VS X 发行说明模板 — 扩展版本、bundled lsp 版本、分析默认、共存说明、协议表面指针(PUBLIC_API)、已知问题。
Service 层日用冒烟(无需 live VS Code):packages/lsp/src/__tests__/ide-daily-smoke.test.ts。公开冻结面:@nudojs/lsp PUBLIC_API.md / API 页。
功能
悬停类型
将鼠标悬停在表达式上可查看其推断类型。扩展通过 getTypeAtPosition 计算光标处的类型,并在悬停工具提示中显示。
/**
* @nudo:case "test" (42)
*/
function double(x) {
return x * 2; // hover over x → number
}