VSCode不支持全局launch.json,因其调试系统仅加载当前工作区根目录下的.vscode/launch.json;用户级settings或extensions无法注入该配置,硬放$HOME/.vscode/下完全无效。

VSCode 不支持全局 launch.json,所谓“全局调试模板”本质是规避硬编码、减少重复配置的协作策略,不是靠放一个文件到用户目录就能生效。
为什么不能直接放全局 launch.json
VSCode 的调试系统只读取当前工作区(即打开的文件夹)下的 .vscode/launch.json。用户级 settings 或 extensions 都无法注入或接管 launch.json 加载逻辑——这是设计限制,不是配置没找对地方。
- 试图在
$HOME/.vscode/settings.json里写debug.configurations字段完全无效 - 放在全局 snippets 目录或插件里生成
launch.json内容,仍需手动复制进每个项目.vscode/才能用 - 不同项目语言、构建命令、端口、源码路径差异太大,强行“一套模板打天下”大概率启动失败
真正可用的“类全局”调试配置三招
用变量 + 预置结构 + 自动化触发,把重复劳动压到最低:
- 在团队脚手架或内部 CLI 工具中预生成
.vscode/launch.json,内容用${workspaceFolder}、${fileBasenameNoExtension}、${env:PORT}等变量动态适配,避免写死program或cwd - 用
preLaunchTask统一调用npm run dev或vite,不依赖手动先启服务;断点不命中,八成是因为你忘了这步 - 对 Node.js 项目,
runtimeExecutable设为"${workspaceFolder}/node_modules/.bin/ts-node",而非全局ts-node——成员本地没装或版本不一致时,全局路径直接报command not found
Chrome / Edge 调试前端时 url 和 webRoot 容易错哪
断点不生效、提示 Breakpoint ignored because generated code not found,90% 出在这两个字段:
-
url必须是 dev server 实际跑起来的地址,比如"http://localhost:5173";写成"https://example.com"、留空、或写成构建后的file:///路径,调试器连不上源码 -
webRoot要指向源码根目录,不是dist或build;Vite 项目通常设"${workspaceFolder}",Create React App 则常用"${workspaceFolder}/src" - 如果用了 webpack/vite 的别名(如
@/components),还得补sourceMapPathOverrides,例如:"webpack:///src/*": "${webRoot}/src/*"
最常被忽略的一点:launch.json 里的配置不会自动继承 settings.json 或环境变量,所有路径、端口、命令都得显式声明或用 VSCode 变量兜住;想靠“一次配置,到处复制”,反而要花更多时间修路径和端口冲突。


















