1 个不稳定版本
0.1.0 | 2023年11月28日 |
---|
#53 在 #serializable 中
在 3 个crate中使用了 (通过 serde-extensions)
5KB
65 行
Lyr的静态站点生成器
基于单个Markdown文件递归生成静态HTML、CSS、JS文件。
这使用了一个自定义的Markdown解析器,它不一定遵循官方规范。我把它做到可以为我所用,欢迎PR!更多信息请参见 LMarkdown
下方。
安装
从cargo安装
cargo install lssg
从git安装
git clone [email protected]:Lyr-7D1h/lssg.git
cd lssg
cargo install --path .
使用方法
生成静态文件
lssg {PATH_TO_INDEX_MARKDOWN_FILE} {PATH_TO_OUTPUT_FOLDER}
这是如何从其内容生成 lyrx 的示例
cd examples/lyrx
lssg ./content/home.md ./build
您可以使用简单的HTML实时重载服务器来查看开发过程中的更改,例如 live-server
您还可以使用Markdown到Markdown的链接来生成内容
lssg https://raw.githubusercontent.com/Lyr-7D1h/lssg/master/examples/lyrx/home.md ./build
[!注意] 输入Markdown文件中指向其他Markdown文件的链接必须包含在输入Markdown文件的父文件夹中
LMarkdown (Lyr的Markdown)
LMarkdown试图遵循 Commonmark Markdown规范,尽管在某些地方会根据简化页面渲染的需要而偏离。
LMarkdown文件的结构
<!--
{MODULE_CONFIG}
-->
{MARKDOWN}
例如。
<!--
[default]
title="This is the html title"
[blog]
root = true
-->
<!--
The first comment on a page is seen as module configuration and is parsed as toml
it has the following format:
[{module_identifier}]
{options}
-->
# Just some header in file
<!-- All HTML comments are ignore in output except starting comments like seen above -->
<!-- The following will generate `http://{root}/test` url based on the markdown file -->
[Check out my other page](./test.md)
<!-- So this in html will turn into `<a href="./test">Check out my other page</a>` -->
架构
简而言之,这是执行LSSG时发生的事情。
Given index markdown file path
|
Sitetree: Recursively find links to resources in parsed pages and stylesheets (stylesheets, fonts, icons, other pages)
|
Sitetree: Add these resources as nodes into Sitetree
|
Go through all nodes in tree
if resources
Copy resource
if page => use modular HtmlRenderer to turn lmarkdown tokens into html, and write to file
HtmlRenderer: Create Domtree
|
HtmlRenderer: Delecate modification of Domtree to modules based on LMarkdown Tokens
|
BlogModule: Render Token if applicable
|
DefaultModule: Fallback rendering of Token, it should render every kind of Token
路线图
依赖项
~0.4–1MB
~22K SLoC