eslint + prettier + javascript and typescript nightly 是 js 高效开发的最小可行配置:eslint 检查代码正确性,prettier 统一代码风格,nightly 提供最新 ts/js 语法支持与精准类型提示,三者协同避免冲突、提升编辑体验。

直接说结论:ESLint + Prettier + JavaScript and TypeScript Nightly 这三个插件组合,配合 editor.formatOnSave 和 eslint.enable 开启,才是 JS 代码高效编写的最小可行配置。装一堆插件但没配对,反而拖慢编辑器、触发冲突、格式化失效。
为什么 ESLint 和 Prettier 不能只装一个
ESLint 负责“对不对”——比如 undefined 变量引用、for...in 遍历数组、缺少 return 的箭头函数,它会标红报错;Prettier 只管“好不好看”——统一用单引号、删掉末尾分号、调整对象换行位置。两者职责不同,硬要只留一个,要么代码跑得通但难读,要么看着整齐但藏着 runtime 错误。
常见错误现象:ESLint 报 semi 错误(要求加分号),但 Prettier 自动删分号,保存后反复“打架”。
- 必须在
settings.json中设"eslint.formatEnable": true,让 ESLint 接管格式化权(而非 Prettier) - 禁用 Prettier 的自动格式化:设
"prettier.enable": false,避免双格式器抢 control - 确保
"editor.formatOnSave": true,且"editor.defaultFormatter"指向dbaeumer.vscode-eslint
JavaScript and TypeScript Nightly 是什么,为什么不是默认 JS 插件
VSCode 自带的 JavaScript 支持基于旧版语言服务,对可选链 ?. 、空值合并 ??、顶层 await、模块导出语法等新特性响应滞后或不提示。而 JavaScript and TypeScript Nightly 是微软官方维护的预发布版语言服务器,每天更新,提前支持 Stage 3+ 提案。
使用 JSON Schema 验证 JSON 数据,从示例 JSON 生成 schema,并将其转换为 TypeScript 接口、Python 数据类或 Markdown 文档。
使用场景:写 fetch(url).then(res => res.json()).catch?.(err => console.error(err)) 时,自带插件可能标红 catch?,Nightly 不会。
- 安装后需重启 VSCode,否则类型推导不生效
- 若项目用
tsconfig.json,它会自动读取,无需额外配置 - 和 Volar、ESLint 不冲突,但若同时启用多个 TS 相关插件,注意关闭重复的
typescript.preferences.includePackageJsonAutoImports
Live Server 和 Debugger for Chrome 怎么配才不卡
这两个插件常被新手一起装,结果一开调试就卡死、热重载延迟 3 秒以上。根本原因是它们都监听 localhost,端口和 WebSocket 冲突。
性能影响:Live Server 默认用 5500 端口,Debugger for Chrome 默认尝试连接 9222;若 Chrome 已被其他调试会话占用,VSCode 会不断重试,CPU 占用飙升。
- Live Server 启动前,在
settings.json加"liveServer.settings.port": 3001,避开常用端口 - Debugger for Chrome 必须配
"debug.javascript.usePreview": false,否则启用新调试器内核,与 Live Server 的 WebSocket 不兼容 - 不要同时运行两个本地服务:关掉 Live Server 再启动 Chrome 调试,或用
launch.json的"url": "http://localhost:3001"直接对接 Live Server 端口
真正容易被忽略的是插件加载顺序:ESLint 和 Prettier 的配置项必须在用户 settings.json 里显式声明,不能只靠插件默认值;而且一旦装了多个语言服务(比如同时有 Volar 和 TypeScript Nightly),VSCode 不会自动降级,而是随机启用一个,导致 Vue 模板里 JS 提示失效——得手动在 .vscode/settings.json 里加 "javascript.suggestionActions.enabled": false 关闭冗余提示。










