我不知道的 VSCode 扩展
架构、进程模型与源码导读
很多人以为 VSCode 是一个单进程应用,但实际上,VSCode 在运行时可以有十几个甚至几十个进程。打开系统的进程管理器,搜索 "Code",会看到一长串进程列表。
VSCode 扩展, 沙箱
// 共 9 篇文章
很多人以为 VSCode 是一个单进程应用,但实际上,VSCode 在运行时可以有十几个甚至几十个进程。打开系统的进程管理器,搜索 "Code",会看到一长串进程列表。
yo code 生成的项目能跑,但它的工具链选择停留在"能用"的水平——tsc 编译、没有打包器、没有测试框架预配置、没有 CI/CD 模板。对于正经的扩展项目来说,还需要额外的工具补强。
一、从本地到全球:发布不只是 publish 一下
VSCode 扩展运行在一个特殊的环境——Extension Host(扩展宿主进程)。它是 VSCode 启动的一个独立 Node.js 子进程,专门用来加载和执行所有扩展代码。
VSCode 可以装几百个扩展而启动速度不崩,靠的不是硬件,而是延迟激活机制。
VSCode 扩展 API 的官方文档列了几百个接口,很多人第一次打开就晕了。其实这些 API 并不是平铺的,而是按职责域组织成几个大模块。理解这张地图,比记住每个方法名重要得多。
上一篇介绍的菜单和树视图能覆盖大部分交互场景,但它们有一个共同的限制——只能展示 VSCode 预定义的 UI 组件。如果需要一个表单、一个图表、一个富文本编辑器,TreeView 就无能为力了。
上一篇提到,VSCode 扩展的很多能力是通过 package.json 声明式注册的。菜单、视图、状态栏就是最典型的三个——它们决定了用户"看到什么"和"怎么交互"。
一、很多人用 VSCode,但不知道扩展是怎么"插"进去的