Foxglove Extensions 发布指南
概述
发布自定义扩展可以帮助团队成员或其他Foxglove用户在自己的工作流程中利用您的贡献。本文档详细介绍了如何准备、打包和发布Foxglove扩展。
发布前准备
设置扩展元数据
在发布之前,必须在package.json
文件中设置扩展的元数据字段:
{
"name": "my-awesome-extension",
"publisher": "your-organization-name",
"version": "1.0.0",
"description": "一个用于数据可视化的强大扩展",
"displayName": "我的超棒扩展",
"author": {
"name": "您的姓名",
"email": "your.email@example.com"
},
"keywords": ["foxglove", "robotics", "visualization"],
"repository": {
"type": "git",
"url": "https://github.com/your-username/my-awesome-extension"
},
"license": "MIT"
}
必需字段说明:
name
: 扩展的唯一标识符publisher
: 发布者名称(组织或个人)version
: 语义化版本号description
: 扩展功能的简短描述
版本管理
遵循语义化版本控制(Semantic Versioning):
# 主版本号:不兼容的API更改
1.0.0 -> 2.0.0
# 次版本号:向后兼容的功能添加
1.0.0 -> 1.1.0
# 修订版本号:向后兼容的错误修复
1.0.0 -> 1.0.1
打包扩展
基本打包流程
-
生成扩展包:
npm run package
-
输出文件:
- 生成ZIP归档文件,扩展名为
.foxe
- 文件名格式:
myExtensionName-0.0.0.foxe
- 包含扩展清单和编译后的代码
- 生成ZIP归档文件,扩展名为
-
验证打包结果:
# 检查生成的文件 ls -la *.foxe # 查看文件内容(可选) unzip -l myExtensionName-0.0.0.foxe
打包配置优化
减少文件大小:
创建config.ts
文件禁用源码映射:
// config.ts
export default {
sourceMap: false
};
自定义打包脚本:
{
"scripts": {
"prebuild": "npm run clean",
"build": "tsc",
"prepackage": "npm run build",
"package": "foxglove-extension package",
"package:prod": "NODE_ENV=production npm run package"
}
}
发布方式
1. 团队内部分发
组织扩展设置
发布到您的组织的扩展会自动为每个成员安装,不再列在组织注册表中的已安装扩展会自动卸载。
权限要求:
- 只有管理员可以发布和删除组织的扩展
通过扩展设置发布:
- 访问账户中的组织扩展设置
- 上传
.foxe
文件 - 设置扩展信息和权限
- 发布给组织成员
使用Foxglove CLI
安装CLI:
npm install -g @foxglove/cli
发布扩展:
# 发布扩展供组织使用
foxglove extensions publish ./my-extension.1.0.0.foxe
管理扩展:
# 显示当前组织的扩展列表
foxglove extensions list
# 取消发布扩展(自动从Foxglove安装中移除)
foxglove extensions unpublish [ID]
CLI配置:
# 登录到Foxglove
foxglove auth login
# 设置默认组织
foxglove config set organization your-org-name
2. 公开发布
发布到扩展注册表
将扩展添加到扩展注册表,与所有Foxglove用户分享(仅桌面应用支持通过注册表安装扩展)。
发布步骤:
-
准备发布文件:
- 将
.foxe
文件发布到公共位置(推荐GitHub Releases) - 确保文件可公开访问
- 将
-
更新注册表:
- Fork Foxglove扩展注册表仓库
- 更新
extensions.json
文件 - 更新README的"Extensions"部分
-
提交PR:
// extensions.json 示例条目 { "id": "your-org.my-extension", "name": "我的扩展", "description": "扩展功能描述", "publisher": "your-org", "homepage": "https://github.com/your-org/my-extension", "keywords": ["robotics", "visualization"], "versions": [ { "version": "1.0.0", "foxgloveVersion": ">=1.0.0", "url": "https://github.com/your-org/my-extension/releases/download/v1.0.0/my-extension-1.0.0.foxe" } ] }
-
等待审核:
- PR合并后,扩展将在Foxglove设置中可用
- 用户可以在扩展市场中找到并安装
发布最佳实践
1. 文档准备
README.md 必需内容:
# 我的扩展
## 功能特性
- 功能1描述
- 功能2描述
## 安装方法
1. 下载最新的.foxe文件
2. 拖拽到Foxglove中安装
## 使用方法
1. 添加面板
2. 配置设置
3. 开始使用
## 配置选项
| 选项 | 描述 | 默认值 |
|------|------|--------|
| option1 | 选项1描述 | default1 |
## 故障排除
常见问题和解决方案
## 贡献指南
如何为项目贡献代码
CHANGELOG.md 版本记录:
# 更新日志
## [1.0.0] - 2024-01-15
### 新增
- 初始版本发布
- 基础面板功能
### 修复
- 修复数据加载问题
### 变更
- 改进用户界面
2. 质量保证
发布前检查清单:
- 所有功能正常工作
- 无控制台错误
- 性能测试通过
- 文档完整准确
- 版本号正确更新
- 许可证信息正确
- 依赖项安全检查
自动化测试:
# 运行测试套件
npm test
# 代码质量检查
npm run lint
# 类型检查
npm run type-check
# 构建验证
npm run build
3. 安全考虑
代码安全:
- 不要在代码中硬编码敏感信息
- 使用环境变量管理配置
- 定期更新依赖项
- 进行安全漏洞扫描
依赖管理:
# 检查安全漏洞
npm audit
# 修复已知漏洞
npm audit fix
# 更新依赖项
npm update
发布后管理
版本更新
发布新版本流程:
-
更新代码和版本:
# 更新版本号 npm version patch # 或 minor, major # 构建和打包 npm run build npm run package
-
发布更新:
# 组织内发布 foxglove extensions publish ./my-extension-1.0.1.foxe # 公开发布(更新注册表) # 提交新的PR更新extensions.json
用户反馈处理
收集反馈渠道:
- GitHub Issues
- 用户调查
- 社区论坛
- 直接联系
问题跟踪:
# Issue模板
## 问题描述
简要描述遇到的问题
## 重现步骤
1. 步骤1
2. 步骤2
3. 步骤3
## 预期行为
描述预期的正确行为
## 环境信息
- Foxglove版本:
- 扩展版本:
- 操作系统:
维护和支持
长期维护计划:
- 定期更新依赖项
- 跟进Foxglove API变更
- 响应用户反馈
- 性能优化
- 安全更新
弃用策略:
# 弃用通知
## 版本1.x即将弃用
**弃用时间:** 2024年6月1日
**替代方案:** 升级到版本2.x
**迁移指南:** [链接到迁移文档]
故障排除
常见发布问题
1. 打包失败
# 检查构建错误
npm run build
# 清理并重新构建
npm run clean
npm run build
npm run package
2. 上传失败
# 检查文件大小(通常有限制)
ls -lh *.foxe
# 检查网络连接
foxglove auth status
3. 权限问题
# 检查组织权限
foxglove organizations list
# 重新登录
foxglove auth logout
foxglove auth login
下一步
- 学习创建高质量的自定义面板
- 了解消息转换器的高级用法
- 掌握扩展性能优化技巧
- 参与Foxglove社区贡献