# 扩展快速开始 ## 功能 本页从一个 `calc` 计算扩展示例开始,演示如何创建扩展开发目录、构建 `.bts` 包、安装到项目并在 `main.bt` 中调用。零基础用户建议先按本页跑通流程,再阅读 [运行机制](/zh-hans/docs/extensions/mechanism)。 ## 语法 快速开始会用到这些命令: ```text bt ext new calc bt ext build calc -o calc.bts bt ext check calc.bts bt ext info calc.bts bt ext install calc.bts project bt main.bt ``` ## 参数 | 参数 | 说明 | | ------ | ------ | | `calc` | 扩展开发目录名,也会作为默认扩展名。 | | `calc.bts` | 构建输出的扩展包文件。 | | `project` | 要安装扩展的目标 BT 项目目录。 | | `main.bt` | 项目入口脚本。 | ## 准备项目 先准备一个普通 BT 项目目录: ```text project/ └── main.bt ``` `main.bt` 用来调用扩展: ```bt result = calc(1).add(2).value() // 输出:3 print result ``` 此时还没有安装 `calc` 扩展,直接运行会找不到 `calc`。下一步先创建扩展。 ## 创建扩展 执行: ```text bt ext new calc ``` 这会生成一个纯 BT 扩展开发目录: ```text calc/ ├── manifest.json ├── bindings.json └── src/ └── lib.bt ``` 默认脚手架已经包含一个链式计算对象:`calc(1).add(2).value()`。 ## 构建扩展包 在 `calc` 目录外执行: ```text bt ext build calc -o calc.bts ``` 构建时会读取 `manifest.json` 和 `bindings.json`,检查入口源码,并把开发目录打包成 `calc.bts`。 构建后可以先检查包信息: ```text bt ext check calc.bts bt ext info calc.bts ``` ## 安装到项目 把扩展安装到项目目录: ```text bt ext install calc.bts project ``` 安装后的结构是: ```text project/ ├── main.bt └── extensions/ └── calc.bts ``` 然后在 `project` 目录运行项目: ```text bt main.bt ``` 输出应为: ```text 3 ``` ## 返回值 `bt ext` 命令成功时会在终端输出创建、构建、检查或安装结果;失败时输出中文错误。示例脚本中 `calc(1).add(2).value()` 返回整数 `3`。 ## 代码示例 扩展对象可以继续链式调用: ```bt num = calc(10) value = num.add(5).add(2).value() closed = num.close() // 输出:[17,true] print [value, closed] ``` ## 注意事项 - `bt ext new calc` 会根据目录名生成扩展名,目录名必须使用小写字母、数字和下划线,并且以小写字母开头。 - `bt ext install calc.bts project` 会把包复制到 `project/extensions/calc.bts`;同名扩展会被覆盖。 - 项目启动时才会加载 `extensions/` 下的 `.bts` 包,开发目录 `calc/` 不会被项目自动加载。 - 如果运行用的 BT 构建没有启用 `extensions` feature,存在 `extensions/` 目录的项目会报错提示扩展能力不可用。