code --list-extensions 仅导出用户级已启用插件id,不包含工作区推荐插件;后者需手动读取项目根目录下的 .vscode/extensions.json 文件中 recommendations 字段,或用 jq -r '.recommendations[]' .vscode/extensions.json 提取。

code --list-extensions 只导出用户级已启用插件,不包含工作区推荐列表——它根本不知道你在哪个工作区、也没读取 .vscode/extensions.json。要拿到当前工作区的推荐插件,得手动提取或用工具生成。
怎么从 .vscode/extensions.json 里直接读出推荐插件
VSCode 工作区推荐插件是明文写在项目根目录下的 .vscode/extensions.json 文件里的,格式固定:
{
"recommendations": [
"ms-python.python",
"esbenp.prettier-vscode",
"bradlc.vscode-tailwindcss"
]
}
这个文件不是自动生成的,必须由人或脚本主动创建并维护。常见错误现象:你打开一个 React 项目却没看到推荐插件,大概率是项目还没配这个文件。
- 检查是否存在:
ls .vscode/extensions.json(Linux/macOS)或dir .vscode\extensions.json(Windows) - 若存在,用
jq -r '.recommendations[]' .vscode/extensions.json提取 ID 列表(需安装jq) - 若不存在,说明该项目没声明推荐插件——
code --list-extensions或任何命令都导不出“推荐”,因为根本没定义
vsce recommend 能否自动推导工作区推荐
vsce recommend 是 VSCode 官方扩展开发工具提供的命令,能基于项目文件(如 package.json、tsconfig.json)推测可能需要的插件,但它不读取当前工作区状态,也不写入 .vscode/extensions.json。
- 运行前需全局安装:
npm install -g @vscode/vsce - 进入项目根目录后执行:
vsce recommend --language=typescript,输出的是候选 ID 列表,非权威推荐 - 它不会识别自定义配置(比如你用
eslint-config-airbnb却没装对应插件),也不会跳过已安装插件 - 输出结果需人工审核,再复制进
.vscode/extensions.json才算真正生效
为什么不能用 Settings Sync 或 code --list-extensions 导出工作区推荐
Settings Sync 默认不同步 .vscode/extensions.json,它只上传用户级配置;而 code --list-extensions 输出的是你本地“已经装好且启用”的插件 ID,和工作区是否推荐完全无关。
- 常见混淆:看到左下角提示 “Install recommended extensions”,点开后列表为空——其实是
.vscode/extensions.json里写了插件但你没装,不是 VSCode 漏了 - 禁用的推荐插件不会出现在
code --list-extensions结果中,但依然保留在.vscode/extensions.json里 - 多人协作时,有人删了
.vscode/extensions.json,其他人就再也看不到推荐提示——这文件必须提交到 Git
工作区推荐插件本质是一份静态声明,不是运行时状态。最易被忽略的一点:它不校验插件是否真适配当前 VSCode 版本,也不检查依赖(比如 Tailwind 插件要求 VSCode ≥1.80),这些都得靠人盯。











