用 code --list-extensions --show-versions > extensions.txt 导出含id和精确版本号的插件清单,格式如 ms-python.python@2023.22.0,确保离线环境可复现;需关闭vscode进程、清理旧插件、补全依赖项,并通过package.json中engines.vscode校验兼容性。

如何用 code --list-extensions 导出可复用的插件清单
离线环境里最怕“这次装的和上次不一样”,而手动记插件名、版本号根本不可靠。真正能复现环境的起点,是导出一份带 ID 和版本号的完整清单。
在一台已配好插件的机器(最好和目标环境 VSCode 版本一致)上运行:
code --list-extensions --show-versions > extensions.txt
输出形如 ms-python.python@2023.22.0 或 esbenp.prettier-vscode@10.3.0,每行一个插件 ID + @ + 精确版本号。这个格式后续可直接喂给批量安装脚本,也能用于比对两台机器差异。
- 别用
code --list-extensions不带--show-versions—— 它只输出 ID,离线安装时很可能拉错版本 - 如果目标机器 VSCode 是旧版本(比如 1.75),但清单里有要求 1.82+ 的插件,
code --install-extension会静默失败,不报错也不提示 - 导出前建议先禁用不用的插件,避免把临时调试用的插件也打包进去
批量安装时为什么 code --install-extension 会跳过某些插件
执行 code --install-extension xxx.vsix 时看似成功,但打开扩展面板发现插件没启用、甚至根本没出现在列表里——常见原因不是命令错了,而是 VSCode 进程没完全退出或插件目录被占用。
- 必须确保 VSCode **完全关闭**:Windows 下检查任务管理器有没有残留的
Code.exe进程;macOS/Linux 下用ps aux | grep code确认无code或Electron相关进程 - 插件安装路径冲突:如果同名插件(相同 ID)已存在且版本更高,VSCode 默认拒绝降级安装,也不会提示 —— 解决办法是先手动删掉
~/.vscode/extensions/(macOS/Linux)或%USERPROFILE%\.vscode\extensions\(Windows)下对应文件夹 - 依赖插件缺失:比如装
ms-python.python时它会自动拉ms-toolsai.jupyter,但离线环境下不会触发。必须把依赖项也列进清单、提前下载好 .vsix
用 package.json 中的 engines.vscode 判断兼容性
离线安装失败最常报的错误是 Unable to install extension 'xxx' as it is not compatible with VS Code 'x.y.z'。这不是网络问题,是插件声明的最低 VSCode 版本高于你当前版本。
解压任意 .vsix 文件(它本质是 zip),打开根目录下的 package.json,找 engines.vscode 字段:
"engines": {
"vscode": "^1.75.0"
}
这意味着该插件要求 VSCode ≥ 1.75.0 且
- 不要盲目改
package.json里的engines.vscode值来绕过检查——改完签名失效,VSCode 会拒绝加载 - 正确做法是去插件的
Version History页面(URL 形如https://marketplace.visualstudio.com/items?itemName=ms-python.python&versionHistory=true)找匹配你 VSCode 版本的历史版本 - 金融、政务类项目尤其要注意:有些插件从某版本起强制要求新 API,旧版 VSCode 即使硬装上,运行时也会崩溃或功能异常
离线场景下 ms-vscode.js-debug 为什么总缺依赖
这是离线部署 Python/Node.js 环境时最典型的“隐形坑”。ms-vscode.js-debug(VSCode 内置调试器)本身不显式列为扩展,但它被 ms-python.python、ms-jsdiagnostics.debugger-for-chrome 等大量插件隐式依赖。离线安装主插件后,调试功能常显示“无法启动调试会话”。
- 它不发布独立 .vsix,而是随 VSCode 主程序分发 —— 所以你必须确认目标机器的 VSCode 版本 ≥ 插件要求的最低版本,否则调试器根本不存在
- 检查方法:打开 VSCode,按
Ctrl+Shift+P输入Developer: Show Running Extensions,看是否有ms-vscode.js-debug条目且状态为activated - 若缺失,唯一解法是升级 VSCode 本身(离线安装新版 VSCode 安装包),而不是试图单独补 .vsix
离线环境里,插件之间的隐式耦合比想象中更紧。真正可靠的方案不是“装完再试”,而是在有网机器上用相同 VSCode 版本做一次完整安装,导出清单,再把整个 .vscode/extensions/ 目录打包同步过去 —— 尤其当涉及调试、语言服务器这类深度集成组件时。











