跳到主要内容

发布时打包、忽略文件和引擎版本怎么处理?

结论​

用 @vscode/vsce 打包或发布。用 .vscodeignore 排除源码、依赖源和本地配置,只留运行所需的包。engines.vscode 写成你真正测试过、且 API 能满足的最低版本。

展开​

常用命令是 vsce package 生成 vsix,vsce publish 发到市场。发布需要发布者账号和令牌。令牌放在本机或 CI 的密钥里,不要写进仓库。

.vscodeignore 的作用类似 npm 忽略,但规则是「打包时排除」。通常排除:

  • src、测试、tsconfig、.map 之外你不想公开的源映射
  • .vscode 里的本地调试配置
  • 文档草稿、截图原件
  • node_modules 里未打包进 bundle 的开发依赖

如果用打包工具把依赖打进单个 dist/extension.js,包里就可以不要 node_modules。如果运行时仍 require 某些依赖,这些依赖必须出现在 dependencies 而不是 devDependencies,并且不能被 ignore 掉。

发布前用打包命令的文件列表检查结果。漏排除会把 .env 和源码打进去;排除过头会让插件安装后找不到入口。

engines.vscode 例如 ^1.85.0。用了 1.85 才有的 API,却写成 ^1.60.0,旧编辑器加载到调用处才崩。市场也会按这个字段过滤能安装的编辑器。

预发布版本走单独通道,不要把每晚构建发成正式版。变更日志、图标、README、LICENSE、publisher、repository 是上架完整性的一部分。

容易讲错的点​

  • .vscodeignore 和 .gitignore 不是同一份。git 忽略了的文件仍可能被打进 vsix,反过来也一样。
  • extensionDependencies 是安装依赖的别的插件,不是 npm 依赖。
  • 升 engines 是破坏性变化,要在变更日志里写用户需要的编辑器版本。