03-发布扩展

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

打包扩展

基本打包流程

  1. 生成扩展包:

    npm run package
    
  2. 输出文件:

    • 生成ZIP归档文件,扩展名为.foxe
    • 文件名格式:myExtensionName-0.0.0.foxe
    • 包含扩展清单和编译后的代码
  3. 验证打包结果:

    # 检查生成的文件
    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. 团队内部分发

组织扩展设置

发布到您的组织的扩展会自动为每个成员安装,不再列在组织注册表中的已安装扩展会自动卸载。

权限要求:

  • 只有管理员可以发布和删除组织的扩展

通过扩展设置发布:

  1. 访问账户中的组织扩展设置
  2. 上传.foxe文件
  3. 设置扩展信息和权限
  4. 发布给组织成员
使用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用户分享(仅桌面应用支持通过注册表安装扩展)。

发布步骤:

  1. 准备发布文件:

    • .foxe文件发布到公共位置(推荐GitHub Releases)
    • 确保文件可公开访问
  2. 更新注册表:

    • Fork Foxglove扩展注册表仓库
    • 更新extensions.json文件
    • 更新README的"Extensions"部分
  3. 提交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"
        }
      ]
    }
    
  4. 等待审核:

    • 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

发布后管理

版本更新

发布新版本流程:

  1. 更新代码和版本:

    # 更新版本号
    npm version patch  # 或 minor, major
    
    # 构建和打包
    npm run build
    npm run package
    
  2. 发布更新:

    # 组织内发布
    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社区贡献
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值