在项目根目录下创建 .vscode/extensions.json 文件,填写正确的 recommendations 字符串数组(如 ["ms-python.python"]),即可让新同事首次打开项目时看到插件推荐横幅;需确保 JSON 格式正确、未禁用推荐、且用于本地开发场景。

怎么让新同事一打开项目就看到该装哪些插件
VSCode 本身不主动推荐插件,但可以通过 .vscode/extensions.json 文件触发“推荐插件”提示——前提是这个文件存在且格式正确,且用户没关掉插件推荐弹窗。
常见错误现象:extensions.json 放错位置(比如放在项目根目录外)、内容为空或字段名写错(比如写成 recommends 而不是 recommendations)、用了中文逗号或多余空格导致 JSON 解析失败。
- 必须放在项目根目录下的
.vscode/子目录里,路径是.vscode/extensions.json -
recommendations字段值是字符串数组,每个元素是插件 ID,格式为publisher.name(如ms-python.python) - 插件 ID 一定要准确——去 VSCode 扩展市场页面看 URL 最后一段,或在已安装插件详情页点「Copy Extension ID」
- 如果项目用 TypeScript,别只写
ms-vscode.vscode-typescript-next,它不稳定;优先用官方稳定的ms-vscode.vscode-typescript-browser或默认自带的 TS 支持
extensions.json 推荐列表为什么有时不弹窗
VSCode 只在「首次打开一个含 .vscode/extensions.json 的文件夹」时才弹出插件推荐横幅。之后再打开,除非手动重置,否则不会重复提醒。
更隐蔽的问题:用户关闭过推荐弹窗(点了「不再显示」),或设置了 "extensions.ignoreRecommendations": true,或工作区禁用了扩展("extensions.experimental.affinity": 0 等非常规配置)。
- 检查设置里是否搜到
ignoreRecommendations并设为false - 确认没在
settings.json里加"extensions.autoUpdate": false——虽然不影响推荐,但会让新人误以为“推荐=自动装”,结果发现点了「Install All」也没反应 - 多人协作时,有人用 Remote-SSH 打开项目,但
extensions.json推荐只对本地窗口生效;Remote 场景得配合devcontainer.json的extensions字段
推荐插件和 devcontainer.json 的 extensions 字段有啥区别
extensions.json 是给人看的提示,devcontainer.json 的 extensions 是给容器环境自动装的——两者不冲突,但目标完全不同。
容易踩的坑:把本该进 devcontainer.json 的调试类插件(如 ms-vscode.cpptools)硬塞进 extensions.json,结果远程开发时没生效;或者反过来,在纯本地项目里配了 devcontainer.json 却忘了加 extensions.json,导致新成员根本不知道要装啥。
- 本地开发为主 → 优先维护
.vscode/extensions.json - 用 Dev Container / Codespaces → 必须在
.devcontainer/devcontainer.json里写"extensions": ["ms-python.python", "esbenp.prettier-vscode"] - 两者可以共存,但
devcontainer.json里的插件不会出现在 VSCode 左侧扩展面板的「推荐」栏里,它只影响容器内环境
怎么验证推荐列表有没有生效
最直接的办法:换一个干净的 VSCode 用户数据目录(比如临时加个 --user-data-dir /tmp/vscode-test 启动),然后打开项目。如果看到右下角弹出「Recommended extensions」横幅,点开能列出你写的插件,就说明 OK。
别依赖「已安装」状态来判断——插件可能早已装过,VSCode 就不提示了;也别只看 extensions.json 文件是否存在,JSON 格式错一个逗号就会静默失效。
- 启动时加参数验证:
code --user-data-dir /tmp/test-vscode --no-extension-diagnostics ./my-project - 打开命令面板(
Ctrl+Shift+P),输Extensions: Show Recommended Extensions,看是否列出对应项 - 终端里运行
code --list-extensions只显示已装插件,跟推荐无关,别混淆
真正麻烦的不是写这个 JSON,而是团队里有人改了插件却忘了同步更新 extensions.json,或者把个人偏好的主题插件也塞进去。推荐列表一旦变成“谁都能改”的文件,就容易失真——它得像 package.json 一样被当作项目契约来维护。


















