VSCode不自动解析资源路径,需Path Intellisense插件配合settings.json映射配置(如"assets": "${workspaceFolder}/assets")及统一项目结构(如所有资源置于assets/下)才能实现可靠路径补全与预览。

VSCode插件不自动处理资源路径,得靠组合配置
VSCode 本身不会替你解析或重写 Markdown、HTML 或 CSS 中的 img、src、href 等路径。所谓“智能路径”,其实是多个插件协同 + 手动约定的结果。单装一个插件基本没用,关键在配合方式和项目结构约束。
常见错误现象包括:图片预览空白、点击跳转 404、导出 PDF 时图片丢失、相对路径在不同工作区层级下失效。
- Path Intellisense 只补全文件系统路径,不校验语义(比如
../assets/logo.png实际不存在也照提示) - Markdown Preview Enhanced 默认按当前编辑器所在文件为基准解析路径,不是按项目根目录
- 如果项目里混用
./、../、/(绝对路径),插件无法统一归一化
Path Intellisense + settings.json 的最小可行配置
这是最轻量但有效的组合,适用于中小型文档项目。
安装 Path Intellisense 后,必须手动配置其过滤规则和根目录行为,否则它默认只扫描当前打开文件夹,跨子目录不生效。
- 在工作区
.vscode/settings.json中添加:
{
"path-intellisense.mappings": {
"assets": "${workspaceFolder}/assets",
"docs": "${workspaceFolder}/docs",
"images": "${workspaceFolder}/assets/images"
},
"path-intellisense.extensions": [".png", ".jpg", ".gif", ".svg", ".pdf"]
}这样写之后,在 Markdown 里输入 必须是纯小写字母+短横线,不能含点号或斜杠
多根工作区下路径失效的典型原因
当你用 .code-workspace 添加了 frontend/ 和 backend/ 两个文件夹,再在 frontend/README.md 里写 ,预览大概率失败。
根本原因是:VSCode 的 Markdown 预览器不识别跨根路径,它只认当前活动文件所属的根目录为起点。
- 预览器内部用的是 Node.js 的
fs.readFileSync(),路径解析基于process.cwd(),而该值在多根工作区中固定为第一个添加的根目录 - 即使你在
frontend/.vscode/settings.json里写了"path-intellisense.mappings",它也只影响补全,不影响预览器加载逻辑 - 解决办法只有两个:把共享资源统一提到工作区根目录(如
assets/),或改用支持 workspace-aware 的插件(如Markdown All in One配合自定义 preview server)
真正可靠的路径管理依赖项目结构约定
所有插件能力都建立在路径可预测的基础上。一旦结构混乱,补全、预览、导出都会出问题。
推荐的最小约束结构:
my-project/
├── .code-workspace
├── assets/
│ ├── images/
│ └── diagrams/
├── docs/
│ └── guide.md
└── frontend/
└── src/
└── index.html- 所有资源引用统一从
assets/开始,例如 -
docs/guide.md和frontend/src/index.html都用相同前缀,避免../层级跳跃 - 如果必须用相对路径(如 HTML 中
<img src="img/logo.png">),确保构建工具(Vite/Webpack)的public目录与 VSCode 路径映射一致
复杂点在于:VSCode 不会校验你的路径是否真实存在,也不会在保存时自动修正。它只提供补全和静态预览——真正的路径健壮性,得靠结构约束 + 构建时检查(比如用 markdown-link-check 或 vite-plugin-checker)。


















