@fwdslsh/unify

中文文档
0.12.0发布于 2026/11/10MPL-2.0ES Module构建来源已验证近 30 天下载 2527

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

中文使用文档
文档目录11 节
  1. 安装
  2. 快开始
  3. 如何运作
  4. 图标
  5. 实例
  6. 文档
  7. 为特工服务
  8. 保证
  9. 审计
  10. 捐款
  11. 许可证

统一

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/ 里面的每一条规范规则都包含在 与真正的CLI相悖的测试中.

安装

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

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 发布。还没有Windows 二进制——使用下面的安装.

节点或 Bun :

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下面运行它。 德诺不支持. 没听说过吗? 用上二进制.

快开始

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 从盒子里出来.

新来的? 教程为 开始。 。 。 .

如何运作

一个布局是完整的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 自动应用 :

<!-- 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:[email protected]">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 块的页面上.

完整的模型在 产品规格; 准确的算法——槽,头合并,根属性, URL重写——都在 合规规格。 。 。 .

图标

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 参考 记录每个命令、选项和退出代码——没有其他命令。 可选 unify.yaml 在项目根上挂有被保存的旗帜,仅有与默认不同之处; unify init 写一个,每个选项 描述和评论 unify build --save-config 从所经过的旗帜上填入.

实例

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

文档

下面的一切都公布在 统一.fwdslsh.dev从 docs/ 统一自己.

使用统一

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

统一的定义

  • 产品规格 ——什么是统一,什么是组成模式,什么是非目标.
  • 合规规格 ——规范实施者参考:精确算法,头相接表,闭关问题/咨询目录.
  • 测试战略 ——检验合同和放行门.
  • CI/CD 工作流程 ——每份工作都进行什么工作,允许它是什么意思.

如何验证文件

  • 批准情况 ——设置,运行工具,产出和现状.
  • 批准议定书 执行政策、评分、隔离和证据规则.
  • 移民计划 ——"活活活活"——目前树的来历. 历史,不是现在的作品.

为特工服务

作者或编辑a 以统一方式建立的网站复议 文件/授权规则 ——60行以下的完整写出表面——在写出任何东西之前,不要取而代之的是其他生成器的常规:统一没有道具,没有表达,没有 draft:编号 :permalink:编号 :slug: 键,且布局不连锁.

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

捐款 统一自己从开始 克劳德·姆德 财务报告和审定财务报表 捐款额; 数据 合规规格 这是规范的.

保证

  • 你写的内容从不默不作声. 失去作者内容的任何内容都是 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。 。 。 .

审计

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/,按页面分类,并附有每一页的记录.

捐款

见 捐款额发展设置:

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

许可证

Mozilla公共许可证2.0。 见 自由主义。 。 。 .

版本与发布记录

@fwdslsh/unify 共发布 56 个版本,首次发布于 2025/08/01;过去 12 个月发布了 45 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.12.0latest2026/11/105 天前
0.11.192026/11/105 天前
0.11.182026/11/106 天前
0.11.172026/10/2917 天前
0.11.162026/10/131 个月前
0.11.16-alpha.1next2026/10/131 个月前

关于 @fwdslsh/unify 的常见问题

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