跳到主要内容
版本:v3

插件打包指南

我们的 ScreenOrientation 插件已功能完备,并作为本地插件成功集成到 Capacitor 应用中。但当前状态下,其他 Capacitor 应用还无法使用这个插件。

现在,让我们为发布做好准备,将 ScreenOrientation 插件打包成全局可用的版本。

注意: 本节内容参考了 Capacitor 文档中 创建 Capacitor 插件 部分的步骤和流程,如需更详细的信息请查阅官方文档。

创建新插件项目

Capacitor 官方提供了 插件生成工具,可以帮助我们快速搭建适合发布全局插件的项目结构。

在新终端中运行以下命令:

npx @capacitor/create-plugin \
--name @capacitor-community/screen-orientation \
--package-id io.ionic.plugins.screenorientation \
--class-name ScreenOrientation \
--repo "https://ionic.io" \
--license "MIT" \
--description "提供跨平台(iOS/Android/Web)统一的屏幕方向控制功能"

当提示输入目录时,直接按回车使用默认值。要求输入作者姓名时,请填写您自己的名字!

移植插件代码

观察生成的项目结构,是不是与应用中搭建的插件结构非常相似?🤔

这种设计正是为了便于将插件代码从应用项目迁移到插件项目中。

src/plugins/screen-orientation 目录下的文件内容分别复制到插件项目中对应的 web.tsindex.tsdefinitions.ts 文件中。

接着移植原生平台代码:将 ScreenOrientation.swiftScreenOrientationPlugin.mScreenOrientationPlugin.swift 内容复制到对应位置。

然后处理 Android 平台文件:复制 ScreenOrientation.javaScreenOrientationPlugin.java 后,更新插件项目中的包声明:

package io.ionic.plugins.screenorientation

该包名是在生成插件项目时指定的,项目中所有 Android 文件都应使用此包名。

最后运行验证命令,确保代码移植过程中没有出现问题:

npm run verify

提示: 发布前可通过链接方式在 Capacitor 项目中测试插件,具体方法参考 插件开发工作流

更新插件文档

插件项目的 README.md 文件已自动更新了 API 文档(运行 npm run verify 时生成)。如需更新文档,修改源码中的 JSDoc 注释后运行 npm run docgen 即可重新生成。

由于本插件要求开发者修改 Capacitor 应用的 AppDelegate.swift 文件,这些配置说明必须包含在文档中。

重要: 始终要完整记录插件安装和配置过程中需要进行的任何修改。

替换 README.md 中的「安装」章节为以下内容:

安装方法

npm install @capacitor-community/screen-orientation
npx cap sync

iOS 配置

iOS 平台需要修改 AppDelegate.swift 文件:

import UIKit
+ import CapacitorCommunityScreenOrientation

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
+ func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -\> UIInterfaceOrientationMask {
+ return ScreenOrientationPlugin.supportedOrientations
+ }
}

发布插件

现在插件已具备发布到 npm 仓库的条件。虽然本教程不实际执行发布,但请注意发布 Capacitor 插件的命令与常规 npm 包相同:npm publish

您可以选择将插件发布到公共 npm 仓库、私有仓库,或者仅在本地通过链接方式供多个项目使用。具体方式取决于您的使用场景。

此外,您还可以加入 Capacitor 社区 GitHub 组织,在那里托管您的插件,与社区和 Capacitor 团队紧密合作,共同维护和发展插件功能。

结语

Capacitor 的插件 API 提供了灵活强大的解决方案,能够为 Capacitor 应用补充 Web 平台无法实现的原生功能。无论您是需要为特定应用添加定制原生代码,还是在多个应用间复用原生功能,这套机制都能完美胜任。

期待您开发的下一个精彩插件!🎉