# @appshell/runtime 中文文档

规范地址：https://npmcn.com/package/%40appshell/runtime/

版本：1\.0\.0-alpha\.148
npm 元数据更新时间：2026-10-29T16:05:35.496Z
中文译文更新时间：2026-11-06T12:28:20.275Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：22.3 kB，13 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2026-08-27T12:16:18.769Z
- 最新版本发布：2026-10-29T16:05:33.400Z
- 近 30 天下载量：6884（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：131（近 12 个月 131 个）

## 中文简介

提供软件包运行时配置的共享单通

## 安装

```sh
npm install @appshell/runtime
```

也可以使用：`pnpm add @appshell/runtime`、`yarn add @appshell/runtime`、`bun add @appshell/runtime`

## README

# @ appshell/ 运行时间

提供软件包运行时配置的商店( Name`vars`对它.

这是一个 **共享单子**。每页有确切的一例 模块联合会共享范围,主机和每个软件包都必须宣布为 这样的。 换了 `window.__appshell_vars__<scope>`。 。 。 .

多数软件包不应直接导入 – 使用 `@appshell/runtime/vars` 如下, 供你们观察.

## `@appshell/runtime/vars`

大部分软件包都想要 写着 _这个_ 包的 vars, 没有范围 无法给别人起名:

```ts
import { getVars } from '@appshell/runtime/vars';

const { BACKGROUND_COLOR } = getVars<{ BACKGROUND_COLOR: string }>();
```

这是一种次道,而不是出于某种原因出口主要出口. `AppshellPlugin` 编译 包的自身范围 任何进口, 主要条目是 _共享_ 模块——整个页的一个实例——所以,在其中烤出一个瞄准镜将是一个 包,和所有其他包 会读错了 vars.

准确匹配的共享密钥 `'@appshell/runtime'` 没有抓住 `'@appshell/runtime/vars'`, (中文(简体) ), 因此,每个软件包会用自己的范围将访问器的复制件捆绑在一起,而存储器则 他们都伸手 保持一个共享的例子.

`getVars` 掷出 `MissingScopeError` 当软件包没有 `AppshellPlugin`, (中文(简体) ), 因为没有东西能取代范围.

## 合同

```ts
setVars(scope, vars); // the host, immediately before loading a remote
readVars(scope); // a package, reading its own configuration
hasVars(scope); // branch instead of catch
```

`@appshell/loader` 电话 `setVars` 在它装入遥控器之前, 所以一个包的 vars在 放在其模块评价之前——包括在模块检索时间读取.

首个瞄准镜的写法获胜并被冻结. 重新交付相同的 vars 是一个 无操作, 因为同样的遥控器可以挂载不止一次; 替换它们抛出 `VarsConflictError`。 。 。 .

`readVars` 掷出 `MissingVarsError` 而不是返回空对象。 一个软件包 静静地使没有配置的失败被替换.

## 组成: `getRemotes` 财务报告和审定财务报表 `getBasePath`

一个容器需要从页面上展示一个应用程序。 工作空间,为 一,建设其通航和从它们出发的航道:

```ts
import { getBasePath, getRemotes } from '@appshell/runtime';

// Every activated remote, keyed as RemoteSlot mounts it (`scope/package/Component`),
// with the metadata its package published.
const remotes = getRemotes<{ route?: string; displayName?: string }>();

// The path the application is served under, for the router's base.
const basename = getBasePath();
```

他们把登记册的构成 印入页面 并揭露这两个 仅部分:一个包的 vars 通过了 `@appshell/runtime/vars`,其余的则 弹壳是有效载荷.

Appshell从不读取元数据,所以它的密钥是所有容器读取的 定义。 您通过的类型 `getRemotes` 未选中, 请验证您所读的 .

都抛出 `MissingCompositionError` 在没有构成的一页上,而不是 返回一个空列表,该列表将使导航中没有任何内容。 在测试中, 设定 `window.__appshell_config__` 您想要的构成.

## 这能做什么,不能做什么

相对于它所取代的全球,它修正了:无约束的、永不清理的密钥;无声的 横包覆盖; 主机和远程之间的负载顺序耦合;以及 未打出又无法发现.

这个 **不使一个瞄准镜的 vars 私自.** 页面上的任何代码都可以调用 `readVars('SomeOtherScope')`,而一个提前装入的包可以蹲入一个瞄准镜上 尚未交付。 没有别的领域——一个框架,一个工人—— 这将改变这一点, 并且这些都不是安全边界。 不要把一个秘密 `vars`; 登记册以两种方式为浏览器服务.

## 设置

双方宣布,或各自以自己的"空"店告终:

```js
new ModuleFederationPlugin({
  shared: {
    '@appshell/runtime': { singleton: true },
  },
});
```

`AppshellPlugin` 当软件包省略时, 构建失败 .

## 常见问题

### @appshell/runtime 是什么？

提供软件包运行时配置的共享单通

### 如何安装 @appshell/runtime？

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

### @appshell/runtime 支持 TypeScript 吗？

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

### @appshell/runtime 支持 ESM 还是 CommonJS？

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

### @appshell/runtime 可以商用吗？

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

### @appshell/runtime 的下载量有多少？

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

### @appshell/runtime 还在维护吗？

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

