跳过主要内容
开发 移动 更新

Capacitor 插件贡献指南

了解如何有效地贡献 Capacitor 插件的设置、编码标准、测试和文档的全面指南。

马丁·多纳迪厄

马丁·多纳迪厄

内容营销人员

Capacitor 插件贡献指南

Capacitor 插件将 web 技术与原生设备功能连接起来,从而使其成为可能 跨平台应用开发. 这个指南帮助你:

  • 设置你的环境: 像 Node.js, Xcode, 和 Android Studio 这些工具是必需的。
  • 遵循 Code 标准: 使用 TypeScript, Swift, 和 Kotlin 使用一致的命名规范和错误处理。
  • 彻底测试: 为 JavaScript、iOS 和 Android 编写单元测试以确保可靠性。
  • 清晰文档: 使用 JSDoc 和 README 文件以便于采用。
  • 提交拉取请求: 在贡献之前确保高质量的 code, 测试和文档。

开源贡献指南 - 如何贡献

环境设置

创建一个合适的开发环境对于高效的插件开发至关重要。一个良好的准备的设置可以让您的插件的编码、测试和部署变得更加顺畅。

所需工具和技能

开始之前,请确保您安装了以下工具:

类别 需求
核心工具 Node.js (LTS), npm 6+, Git
IDE/编辑器 Visual Studio Code 或您的首选编辑器
iOS开发 Xcode, SwiftLint, CocoaPods
安卓开发 安卓工作室, 安卓 SDK, JDK

您还应该对 TypeScript 进行 web 开发,并且要么是 Swift (用于 iOS) 或 Java/Kotlin (用于 Android) 的原生开发任务 [1][2].

设置单元仓库

The Capacitor 插件 单元仓库结构是生态系统赖以生存的基础。这一方法确保您的工作从一开始就符合社区标准。

  1. 分叉和克隆仓库
    首先,分叉 Capacitor 插件仓库到 GitHub。然后,克隆您的分叉仓库:

    git clone https://github.com/your-username/capacitor-plugins.git
    cd capacitor-plugins
    npm install
  2. 安装依赖项和构建
    运行以下命令来安装所需的所有内容并构建插件:

    npm run build
  3. 设置版本控制
    使用特性分支来管理您的更改,并确保您的分叉与上游仓库保持同步。

准备原生平台

为了进行跨平台开发,您需要配置iOS和Android环境。

对于iOS:

  • 从Mac App Store下载Xcode。

  • 使用以下命令安装命令行工具:

    xcode-select --install
  • 使用以下命令安装CocoaPods:

    sudo gem install cocoapods
  • 设置Apple Developer帐户和必要的证书。

  • Use SwiftLint (optional) for maintaining code quality.

For Android:

  • 安装 Android Studio 以及最新的 SDK 和一个虚拟设备。
  • 确保您已安装 JDK。
  • 在 Android Studio 中正确配置 Android SDK。

一旦这些平台设置好,您就可以按照既定的编码实践并深入插件开发。

Code 标准指南

现在您的开发环境已设置好,请遵循这些指南来构建易于维护和使用的插件。

风格指南遵从性

The Capacitor 插件生态系统 使用工具如 ESLint 强制执行严格的编码标准。 ESLint, Prettier, 和 SwiftLint。下面是所需格式化的快速概述:

组件 格式
变量 deviceInfo (小驼峰式)
BatteryManager (帕斯卡式)
方法 getLanguageCode() (小驼峰式)
常量 MAX_RETRY_COUNT (下划线式)

插件应使用TypeScript以获得更好的类型安全性和ES6+功能,如 async/await此外,遵循Swift(iOS)和Kotlin(Android)的平台特定编码约定。

错误和类型管理

跨平台兼容性中一致的错误处理至关重要。以下是一个示例:

async checkPermissions(): Promise<PermissionStatus> {
  try {
    const result = await this.implementation.checkPermissions();
    return result;
  } catch (error) {
    throw new Error(`Permission check failed: ${error.message}`);
  }
}

类型安全:

  • 针对特定场景使用专门的接口。
  • 为平台特定变异应用联合类型。

Code 文档

良好的文档是使插件易于访问和使用的关键。遵循以下实践:

  1. API 文档:使用 @capacitor/docgen编写JSDoc注释以与
/**
 * @description Get the device's current battery level
 * @returns Promise with the battery level percentage
 */
async getBatteryLevel(): Promise<{ level: number }>;
  1. README Structure: 包含安装步骤、配置说明、平台特定要求、使用示例和详细的API参考。

写好的文档确保您的插件易于采用并为更广泛的Capacitor社区做出贡献。

sbb-itb-f9944d2

插件测试指南

测试Capacitor插件涉及关注几个关键领域以确保平滑的功能和可靠性。

原生桥接测试

原生桥接测试确保JavaScript和原生code之间的通信顺畅。要开始测试,请使用每个平台的框架设置测试环境。

以下是一个示例 Jest JavaScript侧的单元测试:

// Example of a Jest unit test for the JavaScript bridge
describe('DeviceInfo Plugin', () => {
  test('getBatteryLevel returns valid percentage', async () => {
    const result = await DeviceInfo.getBatteryLevel();
    expect(result.level).toBeGreaterThanOrEqual(0);
    expect(result.level).toBeLessThanOrEqual(100);
  });
});

对于原生侧的测试,请使用XCTest进行iOS测试,JUnit进行Android测试。以下是Android的示例:

@Test
fun testBatteryLevel() {
    val plugin = DeviceInfo()
    val result = plugin.getBatteryLevel()
    assertTrue(result.level in 0..100)
}

一旦确认核心桥接功能正常工作,接下来就可以测试完整的用户工作流程了。

完整插件测试

为了确保您的插件在不同场景下都能正常工作,测试以下类别:

测试类别 重点关注领域
集成测试 跨平台功能
性能测试 资源使用和响应时间
安全测试 数据处理和权限检查

对于具有复杂功能的插件,模拟真实世界的用户场景。例如,如果您正在测试一个DeviceInfo插件,请检查:

  • 在不同网络条件下成功上传
  • 准确的上传进度报告
  • 大文件传输时的内存使用情况

OTA测试中使用 Capgo

Capgo实时更新控制台界面

Capgo的开源工具使得快速部署和测试更新变得容易。以下是如何使用它:

  1. 设置 更新频道 例如dev、staging和production.
  2. 使用CI/CD工具自动部署.
  3. 立即推送更新.
  4. 通过 Capgo控制台监控性能和问题.

对于分阶段发布,Capgo允许您限制更新到小部分用户。例如,您可以每24小时将新版本推送给25%的用户:

// Example configuration for staged rollout
{
  "plugin": "camera-plugin",
  "version": "1.2.0",
  "rollout": {
    "percentage": 25,
    "interval": "24h"
  }
}

这种分阶段的方法通过利用社区反馈在全面发布之前识别问题。

Pull Request 流程

一旦您对更改进行了彻底的测试,按照以下步骤提交您的拉取请求:

PR 提交清单

在提交之前,请确保您已覆盖这些关键区域:

类别 检查内容
Code 质量 - 确保Swift/Kotlin实现与Web API一致。
测试 - 为任何新功能添加单元测试。
- 确认 CI/CD pipeline 检查成功。
文档 - 根据需要更新 README、inline 文档和 CHANGELOG。

社区指南

在协作时,遵循以下最佳实践:

  • 快速响应审阅者反馈。
  • 保持讨论聚焦于技术细节。
  • 使用 GitHub 的建议功能提出 code 的更改。
  • 提交小型、聚焦的 pull 请求,仅处理一个特性或问题。

对于更大的更改,建议在创建问题之前先讨论您的方法。Capacitor 团队依赖于 GitHub Actions 进行自动检查,所有检查都必须通过才能审阅您的 pull 请求。

Capgo 集成指南

如果您的插件涉及实时更新,请在提交之前确保它与 Capgo 完美兼容:

  1. 版本控制
    为您的插件使用清晰的语义版本控制,并在更改日志中记录所有更改。 Capgo 的系统有助于跟踪用户设备上的版本采用率.

  2. CI/CD 集成
    将 Capgo 集成到您的 CI/CD pipeline 中,以自动化更新部署.

  3. 更新监控
    监控部署成功率并确保遵守应用商店指南.

概要

要以有意义的方式贡献您的插件,很重要的是要遵循建立的流程并符合社区标准。这包括遵循 Capacitor 的编码指南并彻底测试您的工作.

PR 检查清单强调了高质量提交的需要。如果您的插件支持实时更新,集成到 Capgo (如前所述) 可以帮助您快速发布更新,而无需等待应用商店批准.

一旦您的 PR 被合并,继续关注问题并发布版本更新。定期与社区互动、保持一致的维护和 保持与 Capacitor 的更新同步 确保您的插件始终保持有用和相关。

注意用户反馈并根据需要进行更新。这项持续的努力有助于维护整个生态系统的整体质量,并使您的插件对开发者有价值。

从 Capacitor 插件贡献指南继续前进

如果您正在使用 Capacitor 插件贡献指南 来规划原生插件工作,连接它与 Capgo 插件目录 为产品工作流程在 Capgo 插件目录, Capacitor 插件由 Capgo 为 Capacitor 插件由 Capgo 的实现细节 添加或更新插件 在添加或更新插件的实现细节中 Ionic Enterprise 插件的替代品 在 Ionic Enterprise 插件的产品流程中 Capgo 原生构建 在 Capgo 原生构建的产品流程中

Capacitor 应用实时更新

当 web 层 bug 活跃时,通过 Capgo 将修复推送,而不是等待几天的应用商店审批。用户在后台接收更新,而原生变化保持在正常审批路径中。

立即开始

最新博客文章

Capgo 为您提供创建真正专业的移动应用所需的最佳见解。