# @animus-ui/extract 中文文档

规范地址：https://npmcn.com/package/%40animus-ui/extract/

版本：0\.1\.87
npm 元数据更新时间：2026-10-24T04:18:58.936Z
中文译文更新时间：2026-11-06T04:50:51.424Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40animus-ui/extract
原文对照：https://npmcn.com/package/%40animus-ui/extract/?lang=original
项目主页：https://github.com/codecaaron/animus/tree/main/packages/extract#readme
源码仓库：https://github.com/codecaaron/animus

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

- 包体积（解压后）：44.6 MB，178 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=22\.12\.0
- 运行依赖：5 个
- peer 依赖：svelte ^5\.0\.0
- 首次发布：2026-03-25T17:01:28.577Z
- 最新版本发布：2026-10-24T04:18:58.608Z
- 近 30 天下载量：8614（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：111（近 12 个月 111 个）

## 中文简介

Animus 静态CSS提取管(Rust/NAPI)

## 安装

```sh
npm install @animus-ui/extract
```

也可以使用：`pnpm add @animus-ui/extract`、`yarn add @animus-ui/extract`、`bun add @animus-ui/extract`

## README

# @animus-ui/摘录

Animus的rust/NAPI静态CSS提取管。 使用 OXC 分析 TypeScript 源文件,针对序列化系统配置解决构建器链,并发出分层 CSS.

此套件是共享的提取地: `./session` 子路径导出一个 `ExtractionSession` 每一个司机驾驶 `./pipeline` 导出共享配置/选项核心。 它的消耗 [`@animus-ui/vite-plugin`](https://npmcn.com/package/%40animus-ui/vite-plugin), (中文(简体) ), [`@animus-ui/next-plugin`](https://npmcn.com/package/%40animus-ui/next-plugin),则 [`@animus-ui/unplugin`](https://npmcn.com/package/%40animus-ui/unplugin) 转换主机,以及 [`animus` 国 际](https://npmcn.com/package/%40animus-ui/cli)。你通常不会直接安装它 —— 驱动程序依赖于它。 关于独立司机的消费者-宣传合同(模块代号、文物集、出厂代码),见 [独立开采合同](https://github.com/codecaaron/animus/blob/main/docs/standalone-extraction.md)。 。 。 .

## 平台

为:

-   `darwin-arm64` (macOS 苹果硅)
-   `linux-x64-gnu` (Linux x64) (法语)
-   `linux-arm64-gnu` (Linux ARM64) (法语)

## API 密码

提取器是唯一的引擎,因为V1引擎被移除. 软件包根 条目是引擎.

```tsx
import { ExtractEngine, loadSystemModule } from '@animus-ui/extract';

const engine = new ExtractEngine({
  configJson,
  groupRegistryJson,
  themeJson,
  variableMapJson,
  devMode: false,
});
engine.prepare(fileEntriesJson);
const manifest = engine.analyzePrepared();
const { code, hasComponents } = JSON.parse(engine.transformFile(path));
```

### 资料来源

每个驱动程序( Vite 插件, 下一页后面的提取会话) 插件, CLI, 和 unplugin) 分析一个源体, 归为 `createSourceCorpus` 内 `@animus-ui/extract/pipeline` (单位:千美元)`prepare` → 分析 − `publish`· ; `published` 是最后一个已解析的投影 成功通过——见本单元自己对合同的评论.

Vite 插件和提取会话是两个驱动程序,而不是一个驱动程序 保存一份副本:会议出版用于 跨进程读取器,Vite上下文从内存中解答虚拟模块. 原始文件缓存保留在每个驱动程序中: Vite 上下文会变换它 在其分析锁定下逐步缓存,会话会调整其缓存 出版批发. 摄取政策要点`createSourceIngestor`)为 未从输油管出口;其一个生产呼叫点是 在人身保护令内 `tests/source-corpus.test.ts`。 。 。 .

## 驱动和东道方义务

驱动程序或主机所携带的没有输出类型表示的义务.

### 主办者和届会

-   `onExternalRootResolved` 收集过程中,在行走根之前,每个被承认的根会起火,因此一个被监视的主机可以在扫描和监视之间没有盲目间隔的情况下打开它的手柄. `onExternalRootsCommitted` 在一个成功的出版之后,用一个完整的被承认的根集放出一次火;一个失败的管道从不放出火来取出火来,所以主机将打开的都滚回.
-   每个主机项目在同一时间拥有权——摄取后和被执行分析结果之前——这样两个主机就不能为同一个外包提出不同的诊断. 留下的原作 带着它设定的孩子, 所以没有所有者比它所描述的文件长.
-   集成会消耗已公布的替换时间,而不是自取其自取;通过已送达的系统道具的文物内容为 `servedDependencyWitness` 因此,离线改变该文物 移动了时代 并且无效 持久-cache快照 引用旧的。 缺席和空字符串是不同的见证值 .

### 摄入量

-   一个不是实体抛出,命名拒绝阅读器的有效载荷,因为一个空实体与"没有文件"是无法区分的,并且会发布一个空的样式表. 有文件记录的故障频道的呼叫者将投出物翻译进去;没有人会吞下它.
-   如果被承认的原件被中止,则驳回准备的委托书: `rejection` 返回给文件命名的消息,尝试既不能分析,也不能发布,因为分析它会发布一个没有该文件的世代。 每个主机通过自己的失败通道来引导拒绝,保持其最后的一代成功,并持有每个文件的最新观测到的来源,包括有效的编辑,直到没有被中止的解析的尝试一起发布. 其他分析的失败使得它们无法回落。 解析解析器只从警告中恢复.
-   密钥框架收藏按导出名称键, a `name.property` 引用决定与任何地方名称约束该收藏。 装订可以通过交叉文件导入或同一文件中的导出到达.

### 选项

-   这个 `exclude` 方言——"光"对"下"弦",以及始终适用且无法再入的"结构排除"的定义,在" [独立开采合同](https://github.com/codecaaron/animus/blob/main/docs/standalone-extraction.md#changed-plugin-behavior-release-notes-callout),每个司机共享.

### 资产

-   资产副本是内容处理的,从未重叠过,因此订正后的资产在 `assets/` 直到普鲁恩把它取出 选择 `staleAssetPruning: 'full-pipeline'` 当驱动程序为已设置的目录服务时( 已经装入的页面仍然请求旧的 url) 和 `'every-cycle'` 当它重排整个目录每个周期.
-   资产urls 相对于会话 `styles.css`它坐在旁边 `assets/`,因此主机自己的CSS管线将它的公用Path和输出散列应用给他们. 一个不能被替换的描述器会发出警告,并且被从字面上释放,并且以严格的方式失败了构建.

### 发动机

-   `transformSourcesJson` 是配置的变换到达评估者的唯一通道 : `configJson` 将每个道具绑定在一个定义上(`transformId`但不能携带它的身体 `createTransform()` 从项目文件中解析出来的声明从未登记为已配置的定义。 没有它,道具绑定到一个已配置的变换会释放出原始值. A 类 `.props()` 反之,当定义通过相同的承认时,只从分析来源评价已知值;否则,只在运行时运行。 已配置的读取源 `btoa` 或者说 `atob` 额外需求 `transformProvenanceJson`,装载器按定义提供的证据(`loadSystemModule().transformProvenance`),它自己的可调用读取主机函数;没有它,源就被拒绝. 同一证据拒绝显示可调用的任何配置源读取外部声明的绑定值(模块级) `Math`,导入函数的变量。 如果装入器无法找到一个不读出名字的可调用器,则来源保留其文本录入: `{ hostGlobals: [] }` 然后记录兼容性,而不是可调用读取不包含外接.
-   配置定义的评价如下 `.props()` 召回:在固定的翻译步骤预算下,在自己的新领域,每个已知值,主机环境读取下降。 预算中断了 JavaScript 执行; 这不是一个内置( 内置) 调用内存或所花时间的上限 。 标注按值类型绑定在一个键上的其静态类(表单) `typed_system_props`,作为系统道具模块的 `typedSystemProps`) (中文(简体) ). 升级 `@animus-ui/system` 合并 `@animus-ui/extract` 和 消耗插件或 CLI : 一个更古老的系统运行时间忽略了该列表,并且可以将数字的类应用到字符串或者错过字符串的类. 联合来文X或 `staticCss.systemProps` 无法评价的值, 错过了人口规模的值, 或者其字符串处理后的结果会在运行时重写 。 在样式块、 变体、 状态或全局样式中, 它应用原始 `animus.transform.static-evaluation-unavailable`。 。 。 .
-   在dev模式下,公布的报表中显示哪些调节本可以消除而不是消除,因为 `report.eliminated_details` 包含的条目 `kind: "prospective_component"`将JSX扫描器盲点变成写作时的诊断,而不是生产建筑中缺失的CSS.
-   `build:extractor` 检查生锈c与 `rust-toolchain.toml` 在建立已运出二进制前; `build:extractor:debug` 故意跳过检查,因为它会构建一个开发者标注的二进制 .

## 喷雾规则

`@animus-ui/extract/oxlint` 是一个 [氧化剂](https://oxc.rs/docs/guide/usage/linter/js-plugins.html) JS插件有一个规则, `animus/prop-order`。它命令道具一个Animus组件标记按阶段写,然后在阶段内:

1.  a. 变异道具(变异和化合物),按链条的顺序申报;
2.  (一) 声明顺序;
3.  系统道具,在系统的注册顺序中(不是承认它们的团体的顺序),除了写出共同的CSS属性的两个道具,生效的道具会后来出现:在它所覆盖的每一个长手之前有一个快手,因为系统层会发出它们的规则,另一个别名是系统后来定义的,它应用来代替之前的,在它的后. 其价值决定的顺序,或其组成部分在一个周期内接受的规则,共用一个等级,规则保持其书面形式;
4.  习惯道具,按照声明顺序,先被继承.

这是一项可读性公约。 样式表不遵循JSX属性顺序,因此规则不会改变CSS.

```json
{
  "jsPlugins": [{ "name": "animus", "specifier": "@animus-ui/extract/oxlint" }],
  "rules": { "animus/prop-order": "warn" }
}
```

插件必须从配置文件的目录中解析 。 在不升起的装置下 `@animus-ui/extract`,加上它作为一个直接的 dev 依赖.

规则是 `.animus/prop-order.json` 在项目根。 主持人每次分析后都会写 只有在被要求时才写 `propOrderFile: true` 在其选项中(Vite、Next和未插件主机,或 `animus.config` 页:1 `animus build`;关闭后,没有写入文件,分析也没有建立任何数据. `animus prop-order`从 `@animus-ui/cli`,只写这个文件,来自一个分析,没有dev服务器,不管选项怎么说。 保留 `.animus/` 脱离版本控制。 文件记录每个组件的被接受道具及其阶段和级别,其中包含每个书面标记解析到(进口,别名,例如: `Box as B`,命名空间成员,例如 `ui.Box`,再出口,家庭成员),以及每个分析文件、系统模块输入和配置分辨率的内容散列如下(`package.json`, tsconfig 链条, 建筑的 config 文件). 默认情况下, 规则会使用最接近的此类文件 `{ "orderFile": "path/to/.animus/prop-order.json" }` 名称,相对于工作目录。 它的路径相对于所持有的目录 `.animus`,因此该规则只读取一个文件 at `<root>/.animus/prop-order.json` 并将任何其他地点报告为无法使用.

-   **失踪或已死档案.** 如果文件缺失或无法读取,或记录的文件不再与其散列相匹配,则规则报告(仅在文件更改时),并在文件可用之前命令什么都不要. 一个长寿的过程,如编辑器,最多每秒一次重新检查磁盘. 运行中的 Dev 服务器 `propOrderFile: true` 在保存上重新生成它。 否则重运行 `animus prop-order`,包括之后 `oxlint --fix`,因为修复文件会改变它。 在一个过程中,规则本身的 修正,任何一种, 不使文件 stale, 因为移动的字面道具 没有改变任何分析记录,所以一个 `--fix` 运行每个可修复标记的命令,包括当指令压制一些标记时。 对文件的任何其他更改,如在同一行中的另一条规则的修饰,确实读作已更改,标记会在其后被擦去以等待下行.
-   **未解之标.** 分析未解决的标记没有跳过一个组件 。 文件也会在一个函数或块内绑起名称.
-   **留在原地的属性.** 散开相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相接相相接相接相相接相相接相接相相接相接相接相接相相接相接相相接相接相接相接相相接相相相相相接相相相接相相相相相接相接相接相相相接相接相相相相接相接相接相相接相相相接相相相相相相相接相相 `data-*` 或者说 `aria-*` animus总是转发的道具或变体或状态 `.asComponent()` 目标被传送,因为目标可以看到他们到达的顺序. 彼此之间每跑一跑其他被接受道具都是自行订购.
-   **当修正法.** 它只当移动道具无法改变其评价内容时才会修正标记:在运行中的每个值都会重新排序一个字节(只允许在数字上显示一个标记),标记内部没有评论,没有重复道具,以及没有 `as` 或者说 `asChild`保留的非立体价值,例如 `key={item.id}` 或运行中已排列的值,不屏蔽它。 任何其它的出道标记都会得到一个诊断,没有固定.

## 许可证

麻省理工学院

## 常见问题

### @animus-ui/extract 是什么？

Animus 静态CSS提取管\(Rust/NAPI\)

### 如何安装 @animus-ui/extract？

在项目目录运行 npm install @animus-ui/extract，或使用 pnpm add / yarn add / bun add。

### @animus-ui/extract 支持 TypeScript 吗？

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

### @animus-ui/extract 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @animus-ui/extract 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=22\.12\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @animus-ui/extract 可以商用吗？

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

### @animus-ui/extract 的下载量有多少？

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

### @animus-ui/extract 还在维护吗？

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

