# @bittingz/expo-widgets 中文文档

规范地址：https://npmcn.com/package/%40bittingz/expo-widgets/

版本：3\.0\.2
npm 元数据更新时间：2025-07-07T17:51:49.116Z
中文译文更新时间：2026-11-08T04:51:12.503Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40bittingz/expo-widgets
原文对照：https://npmcn.com/package/%40bittingz/expo-widgets/?lang=original
项目主页：https://github.com/gitn00b1337/expo-widgets
源码仓库：https://github.com/gitn00b1337/expo-widgets

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：149 kB，106 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：expo \*，react \*，react-native \*
- 首次发布：2023-07-24T18:33:16.547Z
- 最新版本发布：2025-07-07T17:51:48.934Z
- 近 30 天下载量：13867（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：119（近 12 个月 0 个）

## 中文简介

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

## 安装

```sh
npm install @bittingz/expo-widgets
```

也可以使用：`pnpm add @bittingz/expo-widgets`、`yarn add @bittingz/expo-widgets`、`bun add @bittingz/expo-widgets`

## README

# 展出部件

一个允许您在 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"
        }                      
    }
],
```

3.  在您的 iOS 部件文件夹中创建模块 。 快速文件, Widget Bundle, Depositers.xcassets, 以及 Widget 快速文件 .
4.  您的Android文件夹应该模仿和机器人工作室设置,所以它有两个子文件夹路径: /android/main/java/package name and/android/res/. 软件包名称目前正在调整中。 将您的部件. kt 文件放在里面 。 文件夹应该包含您的资产, 和机器人工作室相同 .
5.  如果您有任何快速文件, 您需要使用模块 。 快速, 只要把它们添加到您的 app. config 中的模块依赖性阵列中 。 这对模块和部件之间的数据模型特别有用.
6.  为了在您的应用程序和部件之间共享数据,您可以使用多种方法,但最简单的方法是使用用户首选项. 此插件会自动为您处理它, 因此您只需要确保使用一个有正确格式的套件Name 。 见实例项目.
7.  如果您想要在您的 iOS 部件中使用自定义字体, 请使用我的 expo- intative- fonts 软件包; 使用时请参见示例项目 。 Android 部件与资源文件夹配合良好,不需要额外的依赖性.
8.  Android , 在 /res/ xml/\\\\ info.xml 中将资源Name 设置为您的文件名
9.  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 模块](https://github.com/gitn00b1337/expo-native-fonts)。您需要将字体配置放在部件配置之前.

## 需要发展吗?

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

## 谢谢!

非常感谢 [毒气师](https://github.com/gaishimo/eas-widget-example) 以一个伟大的基准开始.

## 常见问题

### @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 和提交记录判断。

