发布扩展

发布扩展

发布扩展

功能

官方扩展的元数据、编辑器接口契约和文档只维护 bt-lang/extension/<name>/ 中的一套源文件:manifest.json、bindings.json、README.md 和 README.zh-CN.md。发布时以完全相同的文件内容和文件名复制到官网不可变版本目录。

官网自有的 db/ext/index.json 只保存不适合写入源码 manifest 的注册表状态:最新发布版本、包文件名、下载 URL、SHA-256、字节大小、发布时间、撤回状态和下载计数。不再存在 info.json 或 readme-source.json。

语法

生成的版本目录如下:

命令要求四个源文件均已提交到 github/main,校验 manifest 与 bindings 一致性和 Markdown 格式,复制精确文件,核对扩展包摘要与大小,然后更新 db/ext/index.json。生成快照不得手工编辑。

Manifest 目录字段

扩展运行时字段见 manifest.json。官方发布还要求以下由源码维护的目录字段:

字段类型必填默认值有效值含义
summaryString是无非空文本英文目录短摘要。
descriptionString是无非空文本英文完整说明。
authorString是无文本源码作者。
developerObject是无见下表公开开发者或发布者身份。
repositoryString是无GitHub 或 Gitee 公开 HTTPS URL可审查源码目录。
licenseString是无SPDX 表达式扩展包许可证。
localesObject是{}规范 BCP 47 键只包含本地化展示元数据。

developer 字段

字段类型必填默认值有效值含义
idString是无小写标识符稳定机器身份。
nameString是无非空文本默认英文显示名称。
homepageString否无公开 URL开发者主页。

locales.<tag> 字段

字段类型必填默认值有效值含义
summaryString否顶层 summary非空文本本地化短摘要。
descriptionString否顶层 description非空文本本地化完整说明。
developer_nameString否developer.name非空文本本地化开发者显示名称。

语言键使用规范 BCP 47 大小写。简体中文始终使用 zh-CN,与 README.zh-CN.md 完全一致;manifest 中不得再存储 zh-cn、zh-hans 或 zh-Hans 等别名。官网中文 URL 仍是 /zh-hans/,仅在路由内部映射到 zh-CN。

公开元数据 API

URL响应缓存策略
/api/ext/<name>最新 manifest 与注册表发布记录重新验证
/api/ext/<name>/<version>指定版本 manifest 与注册表发布记录重新验证
/api/ext/<name>/<version>/manifest.json精确发布的 manifest.json不可变
/api/ext/<name>/<version>/bindings.json供编辑器补全与诊断使用的精确 bindings.json不可变
/api/ext/<name>/<version>/README.md精确英文 README不可变
/api/ext/<name>/<version>/README.zh-CN.md精确简体中文 README不可变
/api/ext/<name>/readme/<version>英文 README.md重新验证
/api/ext/<name>/download/<version>精确 .bts 扩展包不可变

全部精确版本文件响应都允许跨域 GET。工具应先通过 /api/ext/<name> 确定版本,再缓存不可变的版本化 manifest.json 和 bindings.json URL。

返回值与回退

英文使用 manifest 顶层展示字段和 README.md。/zh-hans/ext/<name> 页面读取 manifest.locales['zh-CN'] 和 README.zh-CN.md,缺少翻译时回退英文。机器标识、API 名称、版本、哈希、ABI 名称、文件名和下载 URL 永不本地化。

注意事项

  • bt-lang/main 的变化不会修改官网,只有明确发布更高扩展版本时才更新。
  • 注册表审查和包完整性只适用于精确发布版本及其 SHA-256。
  • bindings.json 是运行时校验、VS Code 自动补全、参数提示、对象方法、返回类型和生命周期元数据的规范机器接口。
  • 加载本地 .bts 时不会查询官网;注册表是分发目录,不是运行时白名单。