@bittingz/expo-widgets

中文文档
3.0.2发布于 2025/07/08MITTypeScriptCommonJS零依赖近 30 天下载 1.4万

一个允许您在 iOS 和 Android 中制作本地部件的 expo 模块

中文使用文档
文档目录8 节
  1. 安装
  2. 设置
  3. 覆盖 xcode 选项
  4. 运行示例项目
  5. 解决Android问题
  6. 需要自定义字体吗 ?
  7. 需要发展吗?
  8. 谢谢!

展出部件

一个允许您在 iOS 和 Android 中制作本地部件的 expo 模块 .

安装

将 v1 包用于 expo 49,或 v2 用于 expo 51+.

npx expo install @bittingz/expo-widgets

设置

比较清晰,请参见示例项目. 您可以略去 Android 或 ios 文件夹并设置, 如果您只想要支持一个平台 .

  1. 创建要存储部件文件的文件夹 .
  2. 在您的插件阵列( app. config.{js/ts}) 中添加:
[
    "@bittingz/expo-widgets",
    {
        ios: {
            src: "./src/my/path/to/ios/widgets/folder",
            devTeamId: "your apple dev team ID",
            mode: "production",                        
            moduleDependencies: [],
            useLiveActivities: false,
            frequentUpdates: false,
            entitlements: {
                "any xcode entitlement the widget needs": "entitlement value"
            }
        },
        android: {
            src: "./src/my/path/to/android/widgets/folder",
            widgets: [
                {
                    "name": "MyWidgetProvider",
                    "resourceName": "@xml/my_widget_info"
                }
            ],
            distPlaceholder: "optional.placeholder"
        }                      
    }
],
  1. 在您的 iOS 部件文件夹中创建模块 。 快速文件, Widget Bundle, Depositers.xcassets, 以及 Widget 快速文件 .
  2. 您的Android文件夹应该模仿和机器人工作室设置,所以它有两个子文件夹路径: /android/main/java/package name and/android/res/. 软件包名称目前正在调整中。 将您的部件. kt 文件放在里面 。 文件夹应该包含您的资产, 和机器人工作室相同 .
  3. 如果您有任何快速文件, 您需要使用模块 。 快速, 只要把它们添加到您的 app. config 中的模块依赖性阵列中 。 这对模块和部件之间的数据模型特别有用.
  4. 为了在您的应用程序和部件之间共享数据,您可以使用多种方法,但最简单的方法是使用用户首选项. 此插件会自动为您处理它, 因此您只需要确保使用一个有正确格式的套件Name 。 见实例项目.
  5. 如果您想要在您的 iOS 部件中使用自定义字体, 请使用我的 expo- intative- fonts 软件包; 使用时请参见示例项目 。 Android 部件与资源文件夹配合良好,不需要额外的依赖性.
  6. Android , 在 /res/ xml/\\ info.xml 中将资源Name 设置为您的文件名
  7. Android 应用程序需要多个版本, 并使用不同的软件包名, 您可以使用 distPlacepose, 用您的 app. config. (json/ ts/js) 来替换部件源文件中的所有占位符 。 因此,如果您的源文件包括"package com.company.app"和"import com.company.app",您有两种分布(com.company.app用于 prod和dev.company.app用于dev),那么将 distPlacewides设置为 com.com.company. app将替换所有软件包并导入每个架构正确分布的引用. 如果与你无关,你可以省略这个字段. iOS不需要配置多个分发应用程序.

覆盖 xcode 选项

您可以在 app.json (所有道具都是可选的) 中覆盖 xcode 选项 :

"@bittingz/expo-widgets",
{
    "ios": {
        ...
        xcode: {
            appExtAPI: true, // sets APP_EXTENSION_API_ONLY in the podfile
            configOverrides: {
                // key value pairs e.g. SWIFT_VERSION: '5.0',
            },
            entitlements: {}, // key value pairs
        },
    }
}

配置 Overrides 属性是 xcodeproj 值,必须精确匹配大小写 .

运行示例项目

cd example
npm run prebuild:ios
npm run ios
OR
npm run prebuild:android
npm run android

解决Android问题

如果您在部件 kotlin 文件中使用 R 来获得布局, 您可能会为 R 获得一个未解决的引用错误 。 在这种情况下,只需添加"package your.appconfig.packageid.R",删除你的和机器人文件夹并重建.

需要自定义字体吗 ?

给我 尝试其它 expo 模块。您需要将字体配置放在部件配置之前.

需要发展吗?

如果您需要设计并开发的部件, 请联系更多细节 .

谢谢!

非常感谢 毒气师 以一个伟大的基准开始.

版本与发布记录

@bittingz/expo-widgets 共发布 119 个版本,首次发布于 2023/07/25;过去 12 个月发布了 0 个版本。

版本发布日期距今
3.0.2latest2025/07/081.3 年前
3.1.0-beta.6beta2025/07/071.3 年前
3.1.0-beta.52025/07/071.3 年前
3.1.0-beta.42025/07/071.3 年前
3.1.0-beta.32025/07/071.3 年前
3.1.0-beta.22025/07/071.3 年前

其他发布通道:next → 2.0.0-next,beta → 3.1.0-beta.6。

关于 @bittingz/expo-widgets 的常见问题

@bittingz/expo-widgets 是什么?

一个允许您在 iOS 和 Android 中制作本地部件的 expo 模块

如何安装 @bittingz/expo-widgets?

在项目目录运行 npm install @bittingz/expo-widgets,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:expo(*)、react(*)、react-native(*)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@bittingz/expo-widgets 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@bittingz/expo-widgets 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@bittingz/expo-widgets 可以商用吗?

@bittingz/expo-widgets 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@bittingz/expo-widgets 的下载量有多少?

根据 npm 官方下载统计,@bittingz/expo-widgets 在 2026/10/08 – 2026/11/06 这 30 天内被下载 13,867 次,日均约 462 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@bittingz/expo-widgets 还在维护吗?

最新版本 3.0.2 发布于 2025/07/08(1.3 年前);至今共发布 119 个版本,其中过去 12 个月发布了 0 个;首次发布于 2023/07/25。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。