# @fwdslsh/unify 中文文档

规范地址：https://npmcn.com/package/%40fwdslsh/unify/

版本：0\.12\.0
npm 元数据更新时间：2026-11-10T06:59:49.128Z
中文译文更新时间：2026-11-15T20:31:25.607Z
软件包许可：MPL-2\.0

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

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

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

- 包体积（解压后）：1.3 MB，53 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=22\.12\.0
- 运行依赖：2 个
- peer 依赖：bun \>=1\.2\.0
- 首次发布：2025-08-01T15:54:17.073Z
- 最新版本发布：2026-11-10T06:59:48.727Z
- 近 30 天下载量：2527（2026-10-16 至 2026-11-14，npm 官方下载统计）
- 已发布版本数：56（近 12 个月 45 个）

## 中文简介

HTML 本地构成的静态站点生成器:包含,布局,以及平面 HTML 中的插槽——没有表达语言,没有客户端运行时间

## 安装

```sh
npm install @fwdslsh/unify
```

也可以使用：`pnpm add @fwdslsh/unify`、`yarn add @fwdslsh/unify`、`bun add @fwdslsh/unify`

## README

# 统一

**HTML-内在组成——没有表达语言,没有客户端运行时间.**

统一是HTML和CSS中流利的人的静态站点生成器,他们不想与JavaScript框架,调温语言,或构建工具相干. 在平版 HTML 中写一个页眉、导航、页脚或页面布局一次,并统一将其变成每一页。 输出正是您所写的 HTML 和 CSS —— 统一不添加自己的 JavaScript 。 它取代了复制-paste铬和Apache SSI;它不与雨果(Hugo, 11ty)或Astro竞争.

整个写作表面有五件事,五分钟内可以学习:

| 你想说.. | 你写.. |
| --- | --- |
| 重新使用碎片(导航、脚印、徽章) | `<include src="/_includes/nav.html"></include>` |
| 在布局中环绕页面 | 无所事事——最近的 `_layout.html` 适用; `data-layout="/path.html"` 选一个, `"none"` 选择退出 |
| 标记页面内容所在, 或者让页面替换一个命名区域 | `<main>` 违约; `<slot name="footer">` 在布局中, `slot="footer"` 在页面元素上 |
| 将一个文件或文件夹保存在已建站点之外 | 一个主要下划线: `_draft.html`, (中文(简体) ), `_includes/` |
| 照原样运送一分光片段 `<include>`,嵌入,取出) | 说吧 `*.fragment.html` |

如果不能与这五种表达,它就不属于统一.

> 规格 [`docs/`](https://npmcn.com/package/%40fwdslsh/unify/docs/) 里面的每一条规范规则都包含在 与真正的CLI相悖的测试中.

## 安装

**独立二进制** (Linux and macOS, x86 64 and arm64——没有其他设备可以安装):

```bash
curl -fsSL https://raw.githubusercontent.com/fwdslsh/unify/main/install.sh | bash
```

安装到 `~/.local/bin`; 脚本接受 `--global`, (中文(简体) ), `--dir PATH`, (中文(简体) ), `--version vX.Y.Z`, (中文(简体) ), `--force`,以及 `--dry-run`二进制附于 [GitHub 发布](https://github.com/fwdslsh/unify/releases)。还没有Windows 二进制——使用下面的安装.

**节点或 Bun :**

```bash
npx @fwdslsh/unify build     # no install at all
npm install -g @fwdslsh/unify
bun add -g @fwdslsh/unify
```

节点=22.12.0或 Bun=1.2.0. 一样 `unify` 运行于两者并产生字节-同义输出;安装的脚本默认选择节点,以及 `bun add -g` 在Bun下面运行它。 德诺不支持. 没听说过吗? 用上二进制.

## 快开始

```bash
unify init      # scaffold a starter site into site/
unify dev       # build, watch, serve, reload — http://localhost:3000
unify build     # write the final site to dist/ — upload it anywhere
```

`unify init` 脚手架将一个完整的场地进入 `site/` ——布局,导航包括,主页,CSS包含一个您编辑的自定义属性的主题文件,a `robots.txt`,并按 `site/_examples/` 从不公布的——加上项目根外的三个文件 `site/` 因此,他们永远不能出版: **`README.md`**指导谁编辑网站, **`DEPLOY.md`**,部署配方,和a **`unify.yaml`** 列出每个构建的旗帜,描述和评论,所以你只解析与默认不同之处——用 `template:` live——此站点的模板来自 `unify update` 在向您展示列表并询问之后, 再次获取并复制其更改后的文件到网站, 并在它下面 `keep:`,文件的更新从未覆盖:主题和 `unify.yaml` 自己来 五个模板: `default`, (中文(简体) ), `basic`, (中文(简体) ), `blog`, (中文(简体) ), `docs`, (中文(简体) ), `portfolio`每一个脚手架通过 `unify build --dry-run --strict` 财务报告和审定财务报表 `unify audit --strict` 从盒子里出来.

新来的? 教程为 **[开始](https://npmcn.com/package/%40fwdslsh/unify/docs/getting-started.md)**。 。 。 .

## 如何运作

一个布局是完整的HTML页面——在浏览器中打开它,它的槽回放是它自己的预览:

```html
<!-- site/_layout.html -->
<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>— My Site</title>
    <link rel="stylesheet" href="/assets/style.css">
  </head>
  <body>
    <include src="/_includes/nav.html"></include>
    <main><slot></slot></main>
    <footer><slot name="footer"><p>© My Site</p></slot></footer>
  </body>
</html>
```

一个页面也是一个完整而普通的HTML文档. 它从来没有提到布局——最近的 `_layout.html` 自动应用 :

```html
<!-- site/index.html -->
<!doctype html>
<html>
  <head><title>Home</title></head>
  <body>
    <main>
      <h1>Home</h1>
      <p>This lands in the layout's &lt;main&gt;.</p>
    </main>
  </body>
</html>
```

已建页面是其布局 `<main>` 由页面内容填充,页面标题加入到版面前: `<title>Home — My Site</title>`为了取代一个命名的区域,一个页面将一个标准属性放在一个普通元素上—— `<p slot="footer">© My Site — <a href="mailto:hi@example.com">email us</a></p>` ——该元素取代了布局的 `<slot name="footer">`,标签和所有。 第一句中的优先规则: **被命名的填充到命名的插槽, 其它都到空插槽, 否则进入 `<main>`。 。 。 .**

马克倒行本是相同的,前题提供头部. `title`, (中文(简体) ), `layout`, (中文(简体) ), `class`, (中文(简体) ), `lang`, (中文(简体) ), `dir`,以及 `schema` 是带有行为的前题密钥; 所有其他密钥都变成一个 `<meta>` 标签,以及 `draft`, (中文(简体) ), `permalink`,以及 `slug` 这些错误是统一的名称。 已建页面中不含 `<slot>` 元素,无 `data-layout` 属性,而没有注入脚本——一个能够活到输出中的统一符号是 `<meta name="schema">`在要求生成 JSON-LD 块的页面上.

完整的模型在 [产品规格](https://npmcn.com/package/%40fwdslsh/unify/docs/product-spec.md); 准确的算法——槽,头合并,根属性, URL重写——都在 [合规规格](https://npmcn.com/package/%40fwdslsh/unify/docs/conformance-spec.md)。 。 。 .

## 图标

```
unify [build]            build the site (default command)
unify audit              evaluate the site the build would publish — writes nothing
unify dev                build, watch, serve, and reload — the inner loop
unify watch              build + rebuild on change, no server
unify init [template]    scaffold a starter site — a built-in name, a directory, a git repository (URL/<subdirectory>#ref), or any npm package
unify update [template]  fetch the template again and copy its changed files over the site: the files it would overwrite are listed and confirmed first (--yes answers, --dry-run previews); keep: under template: in unify.yaml names the files it never overwrites
```

`unify --help` 列出每个选项,其中 `--pretty-urls`, (中文(简体) ), `--base-url` (这也会产生) `sitemap.xml`,以及 `feed.xml` 一旦一个页面宣布 `schema: Article`编号 :`BlogPosting`, (中文(简体) ), `--canonical none` (完成一次) `--base-url` 已设定, `--catalog`, (中文(简体) ), `--search-corpus`, (中文(简体) ), `--dry-run`,以及 `--strict`编辑 **[CLI 参考](https://npmcn.com/package/%40fwdslsh/unify/docs/cli-reference.md)** 记录每个命令、选项和退出代码——没有其他命令。 可选 `unify.yaml` 在项目根上挂有被保存的旗帜,仅有与默认不同之处; `unify init` 写一个,每个选项 描述和评论 `unify build --save-config` 从所经过的旗帜上填入.

## 实例

[`examples/`](https://npmcn.com/package/%40fwdslsh/unify/examples/) 拥有8个完整的场地,每个建筑物在地下清洁 `unify build --dry-run --strict`4个由代理撰写,只给了60行作者规则和客户简介,并保存着,因为他们通过了审查——所以他们显示了规则实际导致某人建立的规则;另外4个是手持的,包括统一自己通过统一建造的文档站点,另一个发电机(Eleventy)作为源通过 `--generate`,以及一个浏览、过滤和搜索UI的数据驱动的博客 `--catalog`编号 :`--search-corpus`中:从数据文件生成的页面,客户端过滤,带有自身染色体的部分,没有嵌入染色体的页面,在子目录下部署,htmx互换 `.fragment.html` 面板,一个Svelte组件编译成普通资产,客户端搜索生成了JSON. [`examples/README.md`](https://npmcn.com/package/%40fwdslsh/unify/examples/README.md) 指定每个图案.

## 文档

下面的一切都公布在 **[统一.fwdslsh.dev](https://unify.fwdslsh.dev/)**从 [`docs/`](https://npmcn.com/package/%40fwdslsh/unify/docs/) 统一自己.

**使用统一**

-   **[开始](https://npmcn.com/package/%40fwdslsh/unify/docs/getting-started.md)** ——补习.
-   **[撰写规则](https://npmcn.com/package/%40fwdslsh/unify/docs/authoring-rules.md)** ——完全写出地表,为六十行下.
-   **[CLI 参考](https://npmcn.com/package/%40fwdslsh/unify/docs/cli-reference.md)** –每个命令,选项和退出代码.
-   **[Java 脚本 API](https://npmcn.com/package/%40fwdslsh/unify/docs/api.md)** —— 说 _实验性,可在v1前去除._ `run(options)`:构建为函数,返回状态,诊断,构建的文件和审计报告作为数据.
-   **[模板](https://npmcn.com/package/%40fwdslsh/unify/docs/templates.md)** – 从内置的脚手架, 目录, git 仓库或 npm 包; 保持站点的电流 `unify update`,其中列出了它将覆盖和询问的内容; 发布您自己的模板.
-   **[一体化](https://npmcn.com/package/%40fwdslsh/unify/docs/integrations.md)** ——编译-资产模式:Svelte,TypeScript,或任何有编译器的东西,不采用框架.
-   **[十一号+htmx](https://npmcn.com/package/%40fwdslsh/unify/docs/guides/eleventy-htmx.md)** ——高级堆栈:另一个生成器生成由数据驱动的页面,统一它们,htmx增强它们. 可选的分层, 当不接触它们.
-   **[目录和搜索](https://npmcn.com/package/%40fwdslsh/unify/docs/guides/catalog-and-search.md)** – 一个博客列表, 方方面面, 以及从这两个文件边上构建的搜索框 `--catalog`编号 :`--search-corpus` 写作.
-   **[发电机配方](https://npmcn.com/package/%40fwdslsh/unify/docs/guides/generator-recipes.md)** ——资产URL中的内容散列,有只用一天日期的RSS种子处理你的方式,每个屏幕显示 `--generate`。 。 。 .
-   **[移植一个现有站点](https://npmcn.com/package/%40fwdslsh/unify/docs/guides/porting-an-existing-site.md)** ——保留每个活 URL:哪个源路径回答每个地址,有和没有 `--pretty-urls`,然后用十行对整张名单进行对照.
-   **[模板版本](https://npmcn.com/package/%40fwdslsh/unify/docs/guides/template-versions.md)** ——将模板贴到版本上,移动指针 `unify update`钉上什么 `extends:` 利用,尝试一个模板,或者在船前统一.
-   **[嵌入式使用](https://npmcn.com/package/%40fwdslsh/unify/docs/docker-usage.md)** 在一个容器里运行CLI.
-   **[实例](https://npmcn.com/package/%40fwdslsh/unify/examples/README.md)** ——八个完整的站点及其展示的模式.

**统一的定义**

-   **[产品规格](https://npmcn.com/package/%40fwdslsh/unify/docs/product-spec.md)** ——什么是统一,什么是组成模式,什么是非目标.
-   **[合规规格](https://npmcn.com/package/%40fwdslsh/unify/docs/conformance-spec.md)** ——规范实施者参考:精确算法,头相接表,闭关问题/咨询目录.
-   **[测试战略](https://npmcn.com/package/%40fwdslsh/unify/docs/testing-strategy.md)** ——检验合同和放行门.
-   **[CI/CD 工作流程](https://npmcn.com/package/%40fwdslsh/unify/docs/cicd-workflows.md)** ——每份工作都进行什么工作,允许它是什么意思.

**如何验证文件**

-   **[批准情况](https://npmcn.com/package/%40fwdslsh/unify/ratification/README.md)** ——设置,运行工具,产出和现状.
-   **[批准议定书](https://npmcn.com/package/%40fwdslsh/unify/ratification/ratification-protocol.md)** 执行政策、评分、隔离和证据规则.
-   **[移民计划](https://npmcn.com/package/%40fwdslsh/unify/docs/migration-plan.md)** ——"活活活活"——目前树的来历. 历史,不是现在的作品.

## 为特工服务

作者或编辑a **以统一方式建立的网站**复议 **[文件/授权规则](https://npmcn.com/package/%40fwdslsh/unify/docs/authoring-rules.md)** ——60行以下的完整写出表面——在写出任何东西之前,不要取而代之的是其他生成器的常规:统一没有道具,没有表达,没有 `draft:`编号 :`permalink:`编号 :`slug:` 键,且布局不连锁.

-   `unify init` 丢入一个 **`README.md`** 在项目根( 外部) `site/`,因此无法发布)重述最常见被猜测出错的规则. 如果项目有一个,请阅读它——它重述上面连在一起的规则,绝不是规则的变体.
-   通过检查完成 : `unify build --dry-run --strict`,则 `unify audit --strict`退出时 `0` 从 `unify build` 表示 `dist/` 是完整的站点; 非零值 **未发表** 并且之前的输出没有受到影响——从不报告在非零退出上的成功.
-   `unify --help` 列出完整的 CLI。 没有其他命令或旗帜; 作者的规则生活在 [文件/授权规则](https://npmcn.com/package/%40fwdslsh/unify/docs/authoring-rules.md) 和脚手架 `README.md`而不是在CLI命令.

捐款 **统一自己**从开始 [克劳德·姆德](https://npmcn.com/package/%40fwdslsh/unify/CLAUDE.md) 财务报告和审定财务报表 [捐款额](https://npmcn.com/package/%40fwdslsh/unify/CONTRIBUTING.md); 数据 [合规规格](https://npmcn.com/package/%40fwdslsh/unify/docs/conformance-spec.md) 这是规范的.

## 保证

-   **你写的内容从不默不作声.** 失去作者内容的任何内容都是 `problem`,还有问题阻碍出版。 温和程度, `advisory`时,不设块(在 `--strict` 这很重要。 诊断学是平庸的语言,定位,并命名一个固定——没有规则代码.
-   **出版是交易性的.** 组成和每一次检查——包括对每个内部URL的参考检查——都跑入一棵临时树上,以及 `dist/` 仅以零问题替换。 退出 `0` 表示 `dist/` 是完整的场地; `1` 表示发现问题,且前一个输出为字节前未变; `2` 表示无效使用.
-   **`unify build --dry-run --strict`** 运行整块建筑和每张支票,同时写出一无所有——单行CI lint.

而相反的保证——统一的东西永远不会做:

-   **飞船JavaScript.** 您的脚本通过未触及; 统一注入任何自己的( dev 的活重装从未到达) `dist/`) (中文(简体) ).
-   **种取调伏语言.** 没有变量,循环,条件,或道具. 衍生的页面来自您拥有的脚本,在构建前运行——一个种子是一个例外(`schema:` 加号 `--base-url`) (中文(简体) ).
-   **成为组成部分框架.** 填平布局; `<include>` 将文件逐字拼接,或者用你写的标记来填满片段的插槽——永远不要道具或值.
-   **需要配置.** 常规, 不是配置文件 .
-   **进入您的 CSS, 或者成为真正的网络服务器 .** `@scope`编号 :`@layer` 和真正的服务器已经回答这些.

完整的清单,连同推理和接受的费用,是 [产品规格§5](https://npmcn.com/package/%40fwdslsh/unify/docs/product-spec.md)。 。 。 .

## 审计

`unify audit` 回答另一个问题——不是 _这是建筑的声音吗?_ 不过 _这个网站完成了吗?_ 它运行同样的管道,不发表任何文章,并报告调查结果:一个没有描述的网页,两个页共用标题,a `#fragment` 链接,该链接不命名、重复编号、页面无链接、结构数据与页面相矛盾。 没有分数,没有分数,没有字符数——和 `build` 从来没有运行过任何它, 所以没有发现可以维持释放. `unify audit` 输出 `1` 编号 `broken` 发现(自相矛盾的输出——无论你的意思是错的), `unify audit --strict` 也失败于 `incomplete` 那些是严格的CI门 `unify build --audit` 只有在同一审计通过时才公布. `--format json|sarif` 是机器可读的镜子 `--external` 检查非原产地链接——产品中接触网络的一面旗帜. 虽然 `unify dev` 正在运行中, 同样的发现是一个活页 `http://localhost:3000/_unify/`,按页面分类,并附有每一页的记录.

## 捐款

见 [捐款额](https://npmcn.com/package/%40fwdslsh/unify/CONTRIBUTING.md)发展设置:

```bash
git clone https://github.com/fwdslsh/unify
cd unify
bun install
bun test
```

## 许可证

Mozilla公共许可证2.0。 见 [自由主义](https://npmcn.com/package/%40fwdslsh/unify/LICENSE)。 。 。 .

## 常见问题

### @fwdslsh/unify 是什么？

HTML 本地构成的静态站点生成器:包含,布局,以及平面 HTML 中的插槽——没有表达语言,没有客户端运行时间

### 如何安装 @fwdslsh/unify？

在项目目录运行 npm install @fwdslsh/unify，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 unify，可以用 npx unify 直接运行。

### @fwdslsh/unify 支持 TypeScript 吗？

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

### @fwdslsh/unify 支持 ESM 还是 CommonJS？

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

### @fwdslsh/unify 需要什么版本的 Node\.js？

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

### @fwdslsh/unify 可以商用吗？

@fwdslsh/unify 使用 MPL-2\.0 许可。弱 Copyleft：可以商用，也可以和闭源代码一起使用；但如果分发时修改了 MPL 授权的文件，这些文件的修改需以 MPL 开源。以上为概括，不构成法律意见，请以许可原文为准。

### @fwdslsh/unify 的下载量有多少？

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

### @fwdslsh/unify 还在维护吗？

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

