sublime text支持typescript+react(.tsx)开发需三步:绑定.tsx语法为typescriptreact、配置tsserver_path指向项目本地./node_modules/typescript/lib/tsserver.js、添加tsserver_options:["--project","."]强制启用完整项目模式,缺一不可。

Sublime Text 能支持 TypeScript + React(.tsx)开发,但默认不生效——不是插件装不上,而是关键配置项没填对、语法没绑定、tsserver 没指向项目本地版本,导致高亮失效、跳转失败、JSX 属性仍显示 class 而非 className。
TSX 文件没高亮或 JSX 标签标红?先确认语法绑定和插件加载
Sublime 不会自动把 .tsx 文件识别为 TypeScript React 语法。即使装了 TypeScript-Sublime-Plugin 或 LSP-typescript,若右下角显示的是 Plain Text 或 JavaScript,所有语言服务都无效。
- 打开任意
.tsx文件 → 点击右下角语法名称 → 选TypeScriptReact(LSP)或TypeScript (JSX)(旧插件) - 想永久生效:菜单
View → Syntax → Open all with current extension as… → TypeScriptReact - 如果列表里根本没有
TypeScriptReact,说明插件未加载成功:检查Package Control → List Packages是否有LSP-typescript或TypeScript-Sublime-Plugin;再确认插件目录下存在Tsx.tmLanguage或typescriptreact.sublime-syntax - ST4 用户可直接用内置语法;ST3 必须额外装
TypeScriptSyntax包,否则source.tsx作用域不存在,JSX 展开时div仍输出class而非className
tsserver 不读 tsconfig.json?必须显式指定路径和 project 参数
插件自带的 tsserver 是旧版,不解析你项目的 tsconfig.json,也不识别 "lib": ["ES2020", "DOM"] 或 "jsx": "react",所以会报 Cannot find name 'Promise' 或 JSX 属性类型错误。
- 在插件设置中(
Preferences → Package Settings → TypeScript → Settings或LSP → Settings)填入:{ "tsserver_path": "./node_modules/typescript/lib/tsserver.js", "tsserver_options": ["--project", "."] } -
tsserver_path必须以./开头,否则 Sublime 无法定位到项目级 node_modules -
tsserver_options中的--project .强制启用完整项目模式,否则 paths 别名、types 引入、JSX 编译选项全都不生效 - 改完配置后必须执行
TS: Restart Server(Ctrl+Shift+P 输入),不能只重启 Sublime
Ctrl+Click 跳转失败?检查文件保存状态和类型定义路径
tsserver 只索引已保存的物理文件,未保存的缓冲区内容不会参与语义分析,跳转必然失败;另外,跳转到 .d.ts 显示空白,通常是因为类型定义没被加载。
- 跳转前务必先
Ctrl+S保存当前文件 - 若使用
"paths"别名,仅靠"baseUrl"不够,必须配合--project .才能解析模块路径 - 跳转到第三方库(如
react)却看到空文件?检查node_modules/@types/react是否存在;缺失就运行npm install --save-dev @types/react - 跳转到自定义声明文件(
src/types/index.d.ts)无效?确认该路径已包含在tsconfig.json的"include"或"files"中
Emmet 在 JSX 里不补全?需要手动映射 language scope
默认 Emmet 只在 HTML、Vue 等 scope 下激活,JSX 的 source.tsx 或 source.js.jsx 不在其白名单内,所以 div.my-class + Tab 没反应。
- 进
Preferences → Package Settings → Emmet → Settings - User - 添加:
{ "emmet.includeLanguages": { "javascript": "jsx", "typescriptreact": "jsx" } } - 注意 key 名必须与当前文件的 scope 一致:
typescriptreact对应 TSX 文件,javascript对应 Babel 绑定的 JS/JSX 文件 - 补全后属性自动转为
className、htmlFor等 React 规范写法,前提是语法绑定正确且 Emmet 配置生效
最常被忽略的点是:tsserver 路径写成绝对路径、--project 参数漏掉、TSX 文件没绑定到 TypeScriptReact scope —— 这三者任一出错,整个类型系统就退化成纯语法高亮器。别信“装完插件就自动好”,Sublime 的轻量本质决定了它把控制权交给你,而不是替你猜意图。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











