豫豫言文档API ATLAS
入口静态站。包。豫
3 模块68 名称
全部模块

豫言 / 静态站 @ 0.1.0

用豫言生成静态网站:解析前言,把 Markdown 页面转换成网页,按网址写出页面,原样复制其余文件,并生成站点地图。布局由调用程序用豫言函数套用。

包说明.汉语.md

# 静态站

静态站是用豫言生成静态网站的库,用来代替 Jekyll。一个站点就是一个豫言程序:用本库读取源目录,再用豫言函数给页面套上布局,最后写出整个站点。页面的 Markdown 由「标记文」库转换。

## 包身份

所有者:豫言。包版本:0.1.0。本包为库类型,依赖标准库与标记文。

## 站点的组成

源目录里的文件分两种:

- 页面:以一行 `---` 开头、到下一行 `---` 为止带有前言(front matter)的文件。Markdown 页面(`.md`、`.markdown`)在读取时转换成网页片段,其他页面保留原文。
- 静态文件:其余文件,按字节原样复制。

名字以 `.` 或 `_` 开头的文件和目录默认跳过;排除列表里的路径也跳过;包含列表里的路径即使以 `_` 开头也会处理(例如 Cloudflare 的 `_redirects`、`_headers`)。两个列表都写相对源目录的路径。

页面的网址:前言有 `permalink` 时用它;否则是“/”加相对路径,Markdown 文件的扩展名换成 `.html`。网址以“/”结尾时写到该目录的 `index.html`。网址一律直接用中文,不做百分号编码。

## 前言

每行写“键: 值”,值可以加单引号或双引号;`#` 开头的行是注释。`「前言取」于 前言 于『键』` 取值,没有这个键时得空串。`「解析数据列」` 解析平铺的映射列表(YAML 的“- 键: 值”写法),用来读取站点数据文件。

## 使用

```yuyan
寻观「标准库」之书。
寻观「静态站」之书。

「文件们」乃「列」于「站点文件」也。
「文件们」者「读取站点」于『源目录』于(「列」【『测试』】)于(「列」【『_redirects』】)也。

「套版」乃化「站点文件」而「字符串」也。
「套版」者会「件」而
  鉴「件」而
    有(「页面」于「相对」于「网址」于「页前言」于「页内容」)则
      『<!doctype html><title>』附(「前言取」于「页前言」于『title』)附『</title>』附「页内容」
    或有「其他」则『』
也。

「生成站点」于『源目录』于『输出目录』于『https://example.org』于「套版」于「文件们」。
```

`「生成站点」` 复制静态文件,用套版函数得到每个页面的完整网页并写出,再写 `sitemap.xml`;源目录没有 `robots.txt` 时也写一份指向站点地图的 `robots.txt`。站点地图收录以 `.html` 或“/”结尾的网址,末尾的 `index.html` 省略成目录。

其他导出:`「页面网址」`、`「网址文件」`、`「站点地图」`、`「机器人说明」`、`「复制静态文件」`、`「写出页面」`。

## 限制

前言只支持平铺的键值,不支持嵌套、多行值与流式写法。输出目录的父目录由 Node 宿主的写文件自动创建,其他宿主未必如此。代码里以“待办事项”注明。

## 测试

测试在 `测试/`,是独立的「静态站测试」包。在仓库根目录运行:

```sh
node 豫言操作系统/宿主/节点/宿主.cjs yy豫构.wasm 构建 静态站测试 静态站。测试 --输出 yy静态站测试.wasm -j 24
node 豫言操作系统/宿主/节点/宿主.cjs yy静态站测试.wasm
```

包说明.文言.md

# 静态站

静态站者,以豫言成静态网站之库也,以代 Jekyll。一站即一豫言之程序:以此库读源目录,以豫言之函为诸页套版,终书全站。页中之 Markdown 由「标记文」库转之。

## 籍

所有者曰豫言,版本 0.1.0。此包为库,依标准库与标记文。

## 站之所成

源目录之文分为二:

- 页:首行 `---`,至次一行 `---` 止,有前言(front matter)者。Markdown 之页(`.md`、`.markdown`)读时即转为网页之片,他页存其原文。
- 静文:余者,依字节原样复制。

名以 `.` 或 `_` 起之文与目录,默略之;在排除之列者亦略之;在包含之列者,虽以 `_` 起亦处之(如 Cloudflare 之 `_redirects`、`_headers`)。二列皆书相对源目录之径。

页之网址:前言有 `permalink` 则从之;否则为“/”加相对之径,Markdown 之文易其尾为 `.html`。网址以“/”终者,书于其目录之 `index.html`。网址皆直书中文,不作百分号之编码。

## 前言

每行书“键: 值”,值可加单引或双引;以 `#` 起之行为注。`「前言取」于 前言 于『键』` 取其值,无此键则得空串。`「解析数据列」` 析平铺映射之列(YAML 之“- 键: 值”),以读站之数据文件。

## 用法

```yuyan
寻观「标准库」之书。
寻观「静态站」之书。

「文件们」乃「列」于「站点文件」也。
「文件们」者「读取站点」于『源目录』于(「列」【『测试』】)于(「列」【『_redirects』】)也。

「套版」乃化「站点文件」而「字符串」也。
「套版」者会「件」而
  鉴「件」而
    有(「页面」于「相对」于「网址」于「页前言」于「页内容」)则
      『<!doctype html><title>』附(「前言取」于「页前言」于『title』)附『</title>』附「页内容」
    或有「其他」则『』
也。

「生成站点」于『源目录』于『输出目录』于『https://example.org』于「套版」于「文件们」。
```

`「生成站点」` 复制静文,以套版之函得诸页之全网文而书之,继书 `sitemap.xml`;源目录无 `robots.txt` 则亦书一篇,指站图之所在。站图收以 `.html` 或“/”终之网址,末之 `index.html` 省为目录。

他所出:`「页面网址」`、`「网址文件」`、`「站点地图」`、`「机器人说明」`、`「复制静态文件」`、`「写出页面」`。

## 所未及

前言唯识平铺之键值,不识嵌套、多行之值与流式之书。出之目录,其父目录由 Node 宿主之写文件自建,他宿主未必然。码中以“待办事项”注之。

## 试

试在 `测试/`,别为「静态站测试」包。于仓根行之:

```sh
node 豫言操作系统/宿主/节点/宿主.cjs yy豫构.wasm 构建 静态站测试 静态站。测试 --输出 yy静态站测试.wasm -j 24
node 豫言操作系统/宿主/节点/宿主.cjs yy静态站测试.wasm
```