跳到主要内容
版本:v7

插件打包

目前 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 "Work with the screen orientation in a common way for iOS, Android, and web"

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

移植插件代码

观察生成的项目结构,会发现它与 Capacitor 应用中构建的结构非常相似,对吧?🤔

这显然是刻意为之,以便我们能轻松地将插件代码从 Capacitor 应用移植到生成的插件项目中。

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

接着将 ScreenOrientation.swiftScreenOrientationPlugin.mScreenOrientationPlugin.swift 的内容从原代码库复制到新项目。

同样处理 ScreenOrientation.javaScreenOrientationPlugin.java 文件后,更新插件项目中这些文件的包名:

package io.ionic.plugins.screenorientation

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

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

npm run verify

注意: 发布前可以通过将插件文件夹链接到 Capacitor 项目进行测试。详情请参阅 插件开发工作流

更新插件文档

查看插件项目的 README.md 文件,会发现运行 npm run verify 时已更新了插件 API 的文档。如果修改了源文件的 JSDoc 注释,可以通过运行 npm run docgen 来更新 README 文件中的 API 部分。

本插件要求开发者修改其 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

您可以选择将全局 Capacitor 插件发布到公共 npm 注册表、私有注册表,或者仅在本地机器上链接到多个项目。具体方式取决于您的使用场景。

此外,还可以将插件托管到 Capacitor Community GitHub 组织,在这里您可以与社区和 Capacitor 团队密切合作,持续开发和维护您的插件。

结语

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

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