# @ekrooh/bare 中文文档

规范地址：https://npmcn.com/package/%40ekrooh/bare/

版本：0\.7\.0
npm 元数据更新时间：2026-11-08T14:05:41.277Z
中文译文更新时间：2026-11-14T02:10:27.795Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40ekrooh/bare
原文对照：https://npmcn.com/package/%40ekrooh/bare/?lang=original
项目主页：https://github.com/AndersCan/ekrooh#readme
源码仓库：https://github.com/AndersCan/ekrooh

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

- 包体积（解压后）：248 kB，32 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- 运行依赖：18 个
- 首次发布：2026-08-13T20:01:10.182Z
- 最新版本发布：2026-11-08T14:05:40.921Z
- 近 30 天下载量：2549（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：9（近 12 个月 9 个）

## 中文简介

一个灵魂,许多平台——用于"赤裸"运行时段上跨平台应用的无聊靴子:有线协议,插件内核,RPC信使,运输,和本土主机桥.

## 安装

```sh
npm install @ekrooh/bare
```

也可以使用：`pnpm add @ekrooh/bare`、`yarn add @ekrooh/bare`、`bun add @ekrooh/bare`

## README

# @ekroh/空虚

**一个灵魂,许多平台.** 整个Android,iOS,一个代码库和身份, 网络和桌面.

**文档 : [https://anderscan.github.io/ekrooh 页面存档备份,存于互联网档案馆](https://anderscan.github.io/ekrooh)**

[![CI](https://github.com/AndersCan/ekrooh/actions/workflows/test.yml/badge.svg)](https://github.com/AndersCan/ekrooh/actions/workflows/test.yml) [![Release](https://img.shields.io/github/v/release/AndersCan/ekrooh)](https://github.com/AndersCan/ekrooh/releases/latest)

短跑时间(孔道)上跨平台应用的无聊靴子: a 二进制线条协议、插件内核、 RPC 信使、 传输和本地主机 桥梁,加上一个参考应用.

-   [`vision.md`](https://npmcn.com/package/%40ekrooh/bare/vision.md): 这个项目是和不是.
-   [`AGENTS.md`](https://npmcn.com/package/%40ekrooh/bare/AGENTS.md):如何开发而出"克能"命令.
-   [`CONTRIBUTING.md`](https://npmcn.com/package/%40ekrooh/bare/CONTRIBUTING.md):如何贡献.
-   [`RELEASING.md`](https://npmcn.com/package/%40ekrooh/bare/RELEASING.md):如何切开放出.
-   `docs/`: 内部发展成果评估`docs/adr/`)和代理业务;而不是公共网站.

## 型号

前端( 浏览器 或 WebView) 被写成只能到达后端 通过一个WebSocket 携带二进制框信息.

-   在设备上, 工作盘运行一个为网络服务的回转的 HTTP+WS 服务器 应用程序、媒体文件和协议套接字。 页面连接到 `ws://location.host`。 。 。 .
-   `VITE_TRANSPORT_MODE=mock` 选择模拟传输(测试).
-   浏览器 Dev 在 Dev 后端通过 `VITE_BARE_WS_URL`。 。 。 .

UI从来没有在工作间,赤裸,或主办IPC上分会. `@ekrooh/bare/core` 描述线条协议,而不是执行协议的运行时间.

| 任期 | 含义 |
| --- | --- |
| **前端** | Web UI:浏览器中的Vite捆绑,或者WebView中相同的捆绑. |
| **后端** | 运行核心捆绑,用前端表达框架协议. |
| **东道主** | 原生外壳 (Android/iOS):启动后端,拥有系统API,注入会话靴. |

## 仓库布局

-   `core/`: 有线编码器,插件路由器, RPC 信使, 主机 IPC ()`core/messages`, (中文(简体) ), 循环服务器( n)`core/server`),工人条目(`core/main.core.ts`) (中文(简体) ).
-   `plugins/`: canonic 插件 (`core.health`, (中文(简体) ), `core.discovery`, (中文(简体) ), `core.permissions`, (中文(简体) ), `vendor.media`)和键入事件构建器.
-   `web/transports/`数字 : `MessageTransport`和模拟运输.
-   `android/`: 主机库 `:bare-host` (IPC协调员,插件注册,WebView客户端).
-   `ios/`: 主机 Swift 软件包 `BareHost` (单位:千美元) `Package.swift`) (中文(简体) ).
-   `examples/`数字 : `web/`, (中文(简体) ), `android-app/`, (中文(简体) ), `ios-app/`, (中文(简体) ), `consumer-basic/`。 。 。 .
-   `e2e/`: 模拟运输上的 Playwright specs. `scripts/`: Dev跑者,Playwright包装机,预建取取器.
-   `apps/docs/`:公共docs站点(Astro Starlight, GitHub Pages).
-   `templates/`, (中文(简体) ), `research/`:共享部署模板;设计说明.
-   `prebuilds/`: Bure Kit 预建(被忽略的建设输出).

公众表面是 `exports` 地图在 `package.json` (单位:千美元)`@ekrooh/bare/core`, (中文(简体) ), `/runtime`, (中文(简体) ), `/plugins`, (中文(简体) ), `/plugins/*/events`, (中文(简体) ), `/transports`) (中文(简体) ). 它指着 汇编的无害环境管理和类型申报 `dist/` (建造与 `vp pack`) (中文(简体) ). 消费者 从未看到 TypeScript 源代码 .

## 支持矩阵

| 运行时间 | 状态 | 运输 | 页:1 |
| --- | --- | --- | --- |
| 浏览器 (dev) | 头等舱 | 网络安全套 | Vite + 本地后端( R)`VITE_BARE_WS_URL`(中文(简体) ) |
| 浏览器( 测试) | 头等舱 | 雾 | 决定游戏机运行 |
| 机器人 | 头等舱 | 网络安全套 | 同源回路套接字, cookie 认证 |
| iOS系统 | 一等(参考对等) | 网络安全套 | 同源回转套接字,饼干认证;宿主船舶作为源(`ios/`, SPM) 在发行标签上 |
| 桌面 | 参考文献(macOS) | 网络安全套 | Zig 主机+系统网络视图+侧车 `bare`; 见 `examples/desktop-app` |

均等政策:核心协议和插件合同是运行时不可知的. 能力是选入的插件,可能具有运行时间的特殊性. 插件报告 不支持有决定性错误的行为 。 特性代码调用插件 事件,从不原始平台 API.

## 信件协议

二进制框 : `version` (1字节), `type` (1字节), `headerLen` (2字节,BE), `payloadLen` (3字节,BE), `header` (UTF -8 JSON), (美国英语), `payload` (可选). 执行人: `MessageProtocol` 内 `core/messages` (单位:千美元)`wire-codec.ts`) (中文(简体) ).

页眉类型 : `DISPATCH`, (中文(简体) ), `INVOKE_REQUEST`, (中文(简体) ), `INVOKE_RESPONSE` (回复) `requestId`) (中文(简体) ). `dispatch` 是火和遗忘; `invoke` 请求/答复和 超时.

## 插件

核心船只没有产品特征。 插件ID是命名空格 (`app.photos`· ; `core.*` 财务报告和审定财务报表 `vendor.*` 为框架预留) 本地插件( e)`health.ping`) (中文(简体) ). 运行时间适配器 : `web`, (中文(简体) ), `android`, (中文(简体) ), `ios`, (中文(简体) ), `bare`。 。 。 . Canonical插件在Repository布局下列出.

媒体从不跨出电线(机身16米B). `vendor.media` 是参考文献 对于带外字节: 主机从原地选择或抓取文件, 工作列 在回路服务器上挂载并返回一个 URL,网络层则装入 带饼干认证的 URL .

## 循环服务器和认证

一个服务器( O)`core/server/static-file-server.ts`)服务于网络应用 `/`, 插件 媒体挂载,和 WebSocket 升级。 在设备上它绑起 `127.0.0.1` 一个 麻黄口. 每个请求都用每会的代号敲门:

1.  弹壳注射 `window.__ekrooh = { bootstrap }`,一个单用非(绝不是生代号).
2.  页面呼叫 `POST /login` 与非ce并收 `bare_session_<port>` 饼干`HttpOnly; SameSite=Strict; Path=/`) (中文(简体) ). 港口 在名称中,将两个回回服务器 在一个饼干店分开。 生下来的 符号绝不是登录证书 .
3.  饼干授权 `<img>`, (中文(简体) ), `<video>`, (中文(简体) ), `fetch`,WS升级. 非浏览客户端发送 `X-Bare-Token`没有 `?token=` 倒计时 (见 `docs/adr/0003-loopback-auth-surface.md`) (中文(简体) ).

只有靴子绑住 `/` 是公共预奥。 工人写道: `{ origin, port, bootstrap }` 改为 `handoff.json` 在主机的 sandbox dir (永远不要) ); 主机负载 `http://127.0.0.1:<port>/index.html` 财务报告和审定财务报表 删除文件.

每个请求还必须针对绑定回路服务器(`Host`),和一页 `Origin` 必须是该服务器或明确允许的服务器,在每个模式中.

Dev 后端( L)`mode=dev`运行相同的捆绑,并关闭认证 `ws://localhost:8080`,允许 Vite dev 来源(`origin=` 示众.

## 测试

-   单位: vitest (`vp test`用于编码器、路由器、RPC信使、运输; J Unit for the Kotlin host; XC Test for the Swift host. (原始内容存档于2018-09-21).
-   类型检查 : `tsc --noEmit`,该部分 `vp check`。 。 。 .
-   整合:模拟运输的Playwright e2e(`npm run test:e2e:web`) (中文(简体) ). 浏览器通过 `scripts/playwright-local-browsers.mjs` 输入 `.playwright-browsers/`。 。 。 .
-   原生 : `npm run test:ios` 运行 Swift XCTest 套件和模拟器上的UI测试.

## 图标

名称列表 : [`AGENTS.md`](https://npmcn.com/package/%40ekrooh/bare/AGENTS.md#canonical-commands)共同之处:

| 命令 | 目的 |
| --- | --- |
| `vp check` | 格式、 提示、 类型检查 |
| `vp test` | 单位测试 |
| `npm run test` | 单位+ 剧作家 e2e |
| `npm run dev` | Vite dev 服务器 + 赤裸后端( 重开监视) |
| `npm run dev:mock` | 使用模拟运输 |
| `npm run build:core` | 套装 `core/main.core.ts` (建设) |
| `npm run build:web` | 构建 `examples/web` 进入Android应用程序的资产 |
| `npm run build:ios` | iOS 输入( addons、 捆绑、 网络资产、 xcodegen) |
| `npm run prebuilds` | 获取赤色 Kit 预建( 已检查, 无符号) |
| `npm run playwright:install` | 将铬下载到 `.playwright-browsers/` |
| `npm run smoke:loopback` | 烟雾测试回转服务器 `bare` |

## Android 构建

需要Android SDK (英语)`local.properties` 与 `sdk.dir=...`和赤裸克特预建.

```bash
vp install
npm run prebuilds
npm run build       # core bundle + web assets
./gradlew :examples:android-app:assembleDebug
```

`./gradlew build` 还运行主机库的JUnit测试.

### 完成出版的AAR

`io.github.anderscan.ekrooh:bare-host` 在马文中心(无证书). 把它固定在同一个版本 `@ekrooh/bare`数字 :

```gradle
dependencies {
  implementation "io.github.anderscan.ekrooh:bare-host:<version>"
}
```

GitHub 软件包是一个需要 `read:packages` 符号 。 偏爱马文中心.

## iOS 构建

需要 Xcode 、 简陋的 Kit 预建 `xcodegen`。 。 。 .

```bash
vp install
npm run prebuilds   # also fetches prebuilds/ios/BareKit.xcframework
npm run build:ios
npm run test:ios
```

## 页:1

-   处理 `examples/android-app/src/main/assets/` 作为构建输出。 维特清除 散开 `assets/main-*.{js,css}` 在重建之前.

## 常见问题

### @ekrooh/bare 是什么？

一个灵魂,许多平台——用于"赤裸"运行时段上跨平台应用的无聊靴子:有线协议,插件内核,RPC信使,运输,和本土主机桥\.

### 如何安装 @ekrooh/bare？

在项目目录运行 npm install @ekrooh/bare，或使用 pnpm add / yarn add / bun add。

### @ekrooh/bare 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/ekrooh\_\_bare 是否存在。

### @ekrooh/bare 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @ekrooh/bare 可以商用吗？

@ekrooh/bare 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @ekrooh/bare 的下载量有多少？

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

### @ekrooh/bare 还在维护吗？

最新版本 0\.7\.0 发布于 2026/11/08（5 天前）；至今共发布 9 个版本，其中过去 12 个月发布了 9 个；首次发布于 2026/08/14。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

