必须安装官方 rescript-vscode 插件并配置本地 rescript cli 和有效的 bsconfig.json,否则无语法高亮、跳转、补全及类型提示;插件依赖本地 node_modules/.bin/rescript 提供语言服务,且需运行 rescript build -w 实时更新类型信息。

Rescript 语言支持在 VSCode 中必须装 rescript-vscode 插件
VSCode 默认不识别 .res 或 .resi 文件,也不会提供语法高亮、跳转、补全或类型提示。只装官方 Reason 插件(已弃用)或泛用的 OCaml 插件,无法正确解析 Rescript 的语法和模块系统。
必须安装由 Rescript 官方维护的 rescript-vscode 插件(作者:rescript-lang),它依赖本地 rescript CLI 工具链提供语言服务。没它,写代码等于纯文本编辑。
- 插件市场搜 “Rescript” —— 认准发布者是
rescript-lang,图标为蓝白 R 字标 - 装完后重启 VSCode,打开一个含
bsconfig.json的项目,状态栏右下角应显示Rescript - 如果没反应,检查项目根目录是否存在有效的
bsconfig.json,且其中"reason": "rescript"已启用(新项目默认开启)
必须在项目中初始化 rescript CLI 并生成 bsconfig.json
插件本身不带编译器,所有类型检查、格式化、文件映射都靠项目本地的 rescript 二进制驱动。全局安装 npm install -g rescript 不足以支撑语言服务 —— VSCode 插件会优先查找 node_modules/.bin/rescript。
- 推荐用
npx rescript init初始化项目,它会自动创建bsconfig.json和基础目录结构 -
bsconfig.json中确保"package-specs": { "module": "commonjs", "in-source": true }等配置与你的构建流程匹配,否则跳转可能失效 - 若用 pnpm/yarn,确认
node_modules/.bin/rescript存在且可执行;常见坑是 pnpm 的node_modules/.bin软链接未被插件识别,此时可临时改用yarn或加"rescript.path": "./node_modules/.bin/rescript"到 VSCode 工作区设置
rescript format 和 rescript build 的触发时机影响编辑体验
VSCode 插件默认在保存时调用 rescript format 自动格式化,但格式化依赖 rescript 进程响应速度。如果项目大、依赖多,保存卡顿或格式化失败,不是插件问题,而是 CLI 启动慢或缓存未热。
- 可在
settings.json中关闭自动格式化:"editor.formatOnSave": false,改用快捷键Shift+Alt+F手动触发 - 类型提示(hover / error underline)依赖
rescript build -w后台监听进程 —— 建议开一个终端运行它,否则修改后类型错误不会实时更新 - 不要同时开多个
rescript build -w实例,会导致文件 watcher 冲突,表现为“改了代码没报错/跳转失效”,关掉所有再重开一个即可
调试 Rescript 代码需通过 Source Map 映射到 JS,不能直接断点 .res 文件
VSCode 的 Debugger(如 Chrome DevTools)原生不理解 Rescript 源码,所有断点必须打在生成的 .js 文件上,靠 Source Map 回溯定位。若断点灰色不可用、hover 显示 No source available,说明 Source Map 未正确生成或路径不对。
- 确保
bsconfig.json中"generate-source-maps": true(默认开启) - 构建产物目录(如
lib/js/src)下的.js.map文件必须和.js同目录,且sources字段指向的是相对路径如../../src/App.res,而非绝对路径 - Chrome 调试时,在
sources面板左侧选 “Filesystem” → “Add folder to workspace”,添加项目根目录,VSCode 才能关联 Rescript 源文件
bsconfig.json 和 node_modules/.bin/rescript 是否真实可用 —— 不要跳过验证这一步。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











