VSCode插件市场不提供授权许可选择界面,许可证须由开发者自行声明、放置和维护;license字段仅用于展示,LICENSE文件必须为根目录下的LICENSE或LICENSE.md,内容完整且符合SPDX标准,商业插件需明确区分开源与付费部分并确保分发内容与声明一致。

VSCode插件市场不提供“授权许可选择”界面——你无法在上传时从下拉菜单里选个MIT或Apache-2.0就自动生效。许可证是法律文本,必须由开发者自行声明、放置、维护,市场本身不校验、不解释、不强制。
package.json 里的 license 字段只是声明,不是绑定
很多开发者误以为在 package.json 中写 "license": "MIT" 就完成了合规。实际上:
- 这个字段仅用于展示,VS Code 市场页面会读取并显示它,但不会据此限制安装或运行
- 若值为字符串如
"SEE LICENSE IN LICENSE",市场不会自动加载对应文件内容,用户点击“许可证”链接可能 404 - 若留空或写错格式(如
"license": "mit"小写),部分扫描工具(如license-manager)会直接标为UNKNOWN - SPDX 标准写法才被广泛识别:
"MIT"、"Apache-2.0"、"BSD-2-Clause",不带引号、大小写敏感
LICENSE 文件必须真实存在且路径正确
市场要求开源插件提供可读的许可证文本,否则审核可能被拒。常见疏漏:
- 文件名必须是全大写
LICENSE或LICENSE.md(注意不是license.txt或LICENCE英式拼写) - 必须放在仓库根目录,不能只放在
src/或dist/下 - 内容需为完整、未裁剪的原始许可证文本(例如 MIT 必须包含版权行 + “Permission is hereby granted...”全文)
- 双许可证项目(如 GitLens)需同时提供
LICENSE和LICENSE.plus,并在 README 中明确区分适用范围
商业插件绕不开的两个硬性动作
如果你的插件含付费功能或私有模块,光靠 license 字段远远不够:
- 必须在
README.md显著位置说明商业模式,例如:“基础功能 MIT 开源,Plus 功能需订阅 GitLens+ 许可证” - 不能把商业代码混入 MIT 许可目录;像
src/plus/这类路径需在 package.json 的files字段中显式排除,否则 npm publish 会一并打包 - 若使用自定义许可证(如
GitLens+),必须提供完整文本文件,并在 marketplace 发布页的“许可证”字段手动填写该文件名(市场不支持上传二进制或链接) - 企业客户采购时会查 SPDX ID,所以
license-manager等工具能识别的BSL-1.1、SSPL-1.0等,比写“Proprietary”更利于合规审计
真正容易被忽略的是:许可证声明和实际分发内容必须一致。比如你在 package.json 写了 "license": "MIT",但发布的 vsix 包里偷偷塞了未声明的闭源 SDK,这已构成法律风险,不止是市场下架的问题。


















