在你的应用中更新 Capacitor 至 3.0
Capacitor 3 为生态系统带来了关键的更新和激动人心的新功能。
将你的应用升级到 Capacitor 3 后,是否愿意在这个讨论中分享你的反馈?我们很希望听到你的意见!💖
如果你是插件作者,希望将插件升级到更新的 Capacitor 版本,请参阅 Capacitor 插件升级指南。
NodeJS 12+
Node 8 已结束生命周期。Node 10 将于 2021 年 4 月 30 日结束生命周期。Capacitor 3 需要 NodeJS 12 或更高版本。(推荐使用最新的 LTS 版本。)
Ionic CLI
如果你使用 Ionic CLI,对 Capacitor 3 的官方支持始于版本 6.16.0。我们建议此时通过 npm install -g @ionic/cli 升级到最新版本。
更新 Capacitor CLI 和 Core
npm install @capacitor/cli@latest-3 @capacitor/core@latest-3
ES2017+
Capacitor 3 现在针对 ES2017 环境构建,而非 ES5。插件模板也已更新为针对 ES2017,建议第三方插件更新其 目标。
此更改不应影响你的应用,除非你支持 IE11(Capacitor 不官方支持 IE11)。
TypeScript 3.8+
Capacitor 3 使用更新的 TypeScript 语法,该语法只能在 TS 3.8 或更高版本中使用。
Capacitor 配置更改
如果你已安装 TypeScript 3.8+,可以将 capacitor.config.json 迁移为名为 capacitor.config.ts 的带类型的 TypeScript 配置文件。你可以继续使用 .json 文件,但 TypeScript 配置文件可能为你的团队提供更好的开发体验。以下是 Capacitor 测试应用 中使用的 capacitor.config.ts 文件示例。
/// <reference types="@capacitor/local-notifications" />
/// <reference types="@capacitor/push-notifications" />
/// <reference types="@capacitor/splash-screen" />
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
appId: 'com.capacitorjs.app.testapp',
appName: 'capacitor-testapp',
webDir: 'build',
plugins: {
SplashScreen: {
launchAutoHide: false,
},
LocalNotifications: {
smallIcon: 'ic_stat_icon_config_sample',
iconColor: '#CE0B7C',
},
PushNotifications: {
presentationOptions: ['alert', 'sound'],
},
},
};
export default config;
官方插件
所有插件已从 Capacitor 核心中移除,并放入各自的 npm 包中。这样做有几个原因(参见 #3227),核心团队确信这是正确的方向。你可以像这样导入核心插件:
import { Camera } from '@capacitor/camera';
已移除的插件:Background Task、Permissions 和 Photos
- Background Task:此插件似乎很少使用,并且没有达到大多数开发者预期的效果。核心团队将在未来重新处理后台功能。订阅 #3032 以获取更新。
- Permissions:核心团队已实现了一种替代这种集中式方法的方式,社区插件也可以采用(参见新的 Permissions API)。
- Photos:这个没有文档记录的 iOS 专用插件已被移除。请使用
@capacitor-community/media。
拆分后的插件:Accessibility、App 和 Modals
- Accessibility
- VoiceOver 和 TalkBack 功能已移入 Screen Reader
- App
- 应用相关信息和功能保留在 App 中
- 应用 URL 处理(
openUrl()和canOpenUrl())已移入 App Launcher
- Modals
- Action Sheet 功能(
showActions())已移入 Action Sheet - 对话框功能(
alert()、prompt()和confirm())已移入 Dialog
- Action Sheet 功能(
迁移你的应用以使用新的官方插件包
此更改将要求你单独安装每个你正在使用的插件。
- 搜索你的项目中从
@capacitor/core的Plugins对象中提取的核心插件 - 找到对应的插件文档,记住一些插件已被拆分
- 按照文档中每个插件的安装说明进行操作
- 将插件导入改为从插件包导入(参见插件导入)
- 遵循向后不兼容的插件更改中的说明
使用 Ionic Framework?
Ionic Framework 使用了以下插件中的 API:
为了获得最佳的 Ionic Framework 用户体验,即使你没有在应用中导入它们,也应确保安装这些插件:
npm install @capacitor/app @capacitor/haptics @capacitor/keyboard @capacitor/status-bar
插件导入
Plugins 对象已被弃用,但在 Capacitor 3 中仍将继续工作。Capacitor 插件应更新为使用新的插件注册 API(参见插件升级指南),这将允许直接从插件包中导入它们。
今后,不应使用 @capacitor/core 中的 Plugins 对象。
// 旧方式
import { Plugins } from '@capacitor/core';
const { AnyPlugin } = Plugins;
推荐直接从插件包中导入插件,但插件必须更新为与 Capacitor 3 兼容才能实现。
// 新方式
import { AnyPlugin } from 'any-plugin';