1 个不稳定版本

0.1.0 2023年11月28日

#53#serializable


3 个crate中使用了 (通过 serde-extensions)

MIT 许可证

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

路线图

  • 章节链接
  • 表情符号支持
  • 脚注支持
  • 警报支持
  • 代码高亮支持
  • 支持相对基本网站.com/blog/index.html
    • 请参见 <base href="http://yourdomain.com/">
  • 更新文档
  • 添加恢复和记录日志而不是恐慌
    • 在断链时恐慌
  • 下载和安装指向外部资源的链接(字体、CSS、编码等)
  • 使从notion导入页面更容易
  • 不要将所有文件加载到内存中,可能对大型资源文件或大型站点造成问题
  • 为CSS添加文件压缩
  • 文档模块
  • 多平台支持
    • 为其他平台发布版本 - 自定义样式支持 - 将默认选项设置为属性根(不需要[default]块) ~~- Html 宏

依赖项

~0.4–1MB
~22K SLoC