vscode唯一认的“个人插件库”文件是项目根目录下的.vscode/extensions.json,它硬声明推荐插件id数组(如"ms-python.python"),首次打开工作区时强制显示提示,不依赖市场模糊匹配,支持团队同步且需提交至git。

直接在项目根目录建 .vscode/extensions.json,这是 VSCode 唯一认的“个人插件库”文件,不是全局配置,也不依赖插件市场推荐逻辑。
为什么 extensions.json 比自动推荐更可靠
VSCode 自动弹出的「推荐插件」横幅(比如打开 package.json 后)靠的是模糊匹配语言标签和市场关键词,经常漏掉关键工具(如特定 LSP 客户端、私有 formatter 插件),或推一堆无关项。而 extensions.json 是硬声明——你写进去的每个 ID 都会强制出现在 Workspace Recommendations 区域,且支持团队同步。
- 它不触发自动安装,只提示;但提示内容完全可控,不会被算法干扰
- VSCode 会在你首次打开该工作区时,在扩展视图顶部显示 This workspace has extension recommendations
- 右键点击推荐列表里的插件,可一键 Install in Dev Container(如果用了 devcontainer)
extensions.json 的正确写法和常见错误
文件必须放在项目根目录下的 .vscode/ 子目录中,路径是 .vscode/extensions.json。任何其他位置(如 src/.vscode/ 或用户主目录)都不生效。
- 字段名只能是
recommendations,拼错成recommended或recommends就静默失败 - 数组里每个元素是完整插件 ID,格式为
"publisher.name",例如"ms-python.python",不能省略 publisher 前缀 - 不要加注释:JSON 标准不支持
//或/* */,否则整个文件被忽略 - 示例合法内容:
{
"recommendations": [
"esbenp.prettier-vscode",
"bradlc.vscode-tailwindcss",
"bierner.markdown-preview-github-styles"
]
}
如何生成一份贴合当前项目的插件清单
别靠猜。先看项目实际依赖和技术栈,再映射到插件:
- 有
package.json且含"type": "module"或exports字段 → 加microsoft.vscode-typescript-next(确保 TS 支持最新语法) - 用 Vite + Vue3 → 必加
johnsoncodehk.volar,而不是 Vetur(后者已废弃) - 含
pyproject.toml且用 ruff → 推荐charliermarsh.ruff-vscode,不是ms-python.python单独覆盖 - 运行
vsce recommend --language=typescript可快速输出候选 ID,但需人工过滤掉带-beta或实验性标记的条目
容易被忽略的权限与协作细节
extensions.json 本身不安装插件,但它会影响 Dev Container 构建行为:如果 .devcontainer/devcontainer.json 中启用了 "customizations": { "vscode": { "extensions": [...] } },那两者会合并,此时 .vscode/extensions.json 的内容优先级更低。
- Git 提交时务必把
.vscode/extensions.json加入版本控制,否则新成员 clone 后根本看不到推荐 - Windows 用户若用 WSL2 开发,注意 VSCode 桌面版和 WSL 版插件库不共享 ——
extensions.json能强制统一提示,但实际安装仍需分别操作 - 如果项目用了 pnpm +
node_linker: hoisted,某些插件(如 ESLint 扩展)可能因找不到本地eslint二进制而报错,这时要在extensions.json里补上dbaeumer.vscode-eslint并配好eslint.packageManager设置











