vsce package执行前必须检查README.md首行是否为#显示名、LICENSE文件是否存在且非空、package.json中publisher字段是否非空且格式合法;三者任一缺失或错误将导致打包失败或.vsix安装静默失败。

vsce package 命令执行前必须检查的三件事
直接运行 vsce package 失败或生成的 .vsix 无法安装,90% 是因为这三项没过:README.md 首行不是 # 显示名、缺少非空 LICENSE 文件、package.json 中 publisher 字段为空或格式错误。VS Code 市场审核和本地打包不报错,但安装时会静默失败——拖进编辑器无反应,code --install-extension 报 “Extension is not signed” 或直接忽略。
-
README.md必须存在,且第一行严格为# 插件显示名(不能是链接、空行、纯描述) -
LICENSE或LICENSE.md必须存在,内容至少一行文字(如MIT),不能是空文件或软链接 -
package.json中publisher字段不能为空字符串,也不能含非法字符(只允许字母、数字、短横线),且需与后续发布账户一致
Windows 下 vsce package 报 zip 错误或路径失效
PowerShell 默认执行策略会拦截 vsce 写入临时文件,中文路径或空格会导致压缩包结构损坏,最终 .vsix 解压后顶层目录缺失或文件错位——VS Code 启动时不识别该插件。
- 推荐在 Git Bash 或 WSL 中执行
vsce package,避免 PowerShell 策略干扰 - 项目路径不要含中文、空格或特殊符号;若已存在,先用
mv重命名再打包 - 打包后立即用
unzip -l your-ext-0.1.0.vsix检查顶层目录名是否与package.json中name字段匹配(如john.doe.hello-world-0.1.0/),否则安装必失败
如何让打包出的 .vsix 支持旧版 VS Code
engines.vscode 字段决定最低兼容版本,设错会导致插件在用户机器上完全不激活,且不报任何错误——命令搜不到、断点不命中、状态栏不出现。
- 字段值形如
"^1.83.0",表示支持 VS Code 1.83.0 及之后所有版本(含 1.85、1.86) - 不要写成
"1.85.0"(仅限该版本)或=1.85.0"(语法错误) - 建议设为当前主力开发版减去 2 个 minor 版本(例如你用 1.85.1,就填
"^1.83.0"),兼顾稳定性与覆盖面
打包后 .vsix 安装不生效的常见原因
双击无反应、拖拽提示“无效扩展”、命令行安装后重启无变化——问题往往不在打包本身,而在安装方式或环境校验逻辑。
- 拖拽安装:必须拖到编辑器主工作区中央(非设置页、非侧边栏、非远程 SSH 连接窗口),且 VS Code 窗口需处于焦点状态
- 命令行安装:
code --install-extension后必须跟**绝对路径**,Windows 上推荐用正斜杠,如C:/my-ext/hello-world-0.1.0.vsix - 手动复制安装:解压
.vsix后,把顶层目录(如john.doe.hello-world-0.1.0/)整个复制到~/.vscode/extensions/(macOS/Linux)或%USERPROFILE%\AppData\Roaming\Code\Extensions\(Windows),漏掉外层目录名即失效
真正容易被忽略的是:VS Code 启动时会对每个插件的 main 字段指向的 JS 文件做存在性校验,如果 TypeScript 项目忘了 npm run compile 或 npm run watch,打包出来的 .vsix 里就没有 out/extension.js,此时无论怎么安装,插件都不会激活。


















