4 个版本

0.1.3 2024年6月22日
0.1.2 2024年6月14日
0.1.1 2024年6月14日
0.1.0 2024年6月14日

#2194 in 命令行工具

MIT/Apache

11KB
151

SiteSmith 🛠️

crates.io

SiteSmith 是一个用于生成个人网站的 Rust CLI 工具。它从 JSON 文件中读取项目和工作经验数据,并使用模板创建 HTML 网站。

功能

  • 解析项目和工作经验的 JSON 数据。
  • 利用 HTML 模板格式化和生成网站。
  • 可自定义项目和工作经验条目的模板。

安装

  1. 确保您已安装 Rust
  2. 使用 Cargo 安装 SiteSmith
cargo install sitesmith

用法

要生成您的网站,请使用以下参数运行 sitesmith CLI 工具

sitesmith --projects <projects.json> --work <work.json> --template <template.html> --output <output.html>

参数

  • --projects:包含项目数据的 JSON 文件路径。
  • --work:包含工作经验数据的 JSON 文件路径。
  • --template:HTML 模板文件路径。
  • --output:要生成的输出 HTML 文件路径。

示例

sitesmith --projects projects.json --work work.json --template template.html --output index.html

JSON 数据格式

项目 JSON 格式

项目 JSON 文件应包含一个项目条目数组。每个条目应具有以下结构

[
    {
        "name": "Project Name",
        "descr": ["Project description item 1", "Project description item 2"],
        "extra": ["<p>Additional project information</p>"]
    },
    ...
]

工作经验 JSON 格式

工作经验 JSON 文件应包含一个工作经验条目数组。每个条目应具有以下结构

[
    {
        "name": "Job Title",
        "timespan": "Duration",
        "location": "Location",
        "descr": ["Job description item 1", "Job description item 2"],
        "extra": ["<p>Additional job information</p>", "<b>Even more job info!</b>"]
    },
    ...
]

HTML 模板

HTML 模板应包含项目和工作经验部分的占位符。例如

<!DOCTYPE html>
<html>
<head>
    <title>My Personal Website</title>
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
    <header>
        <h1>Welcome to My Personal Website</h1>
    </header>
    <main>
        <section id="projects">
            {projects}
        </section>
        <section id="work">
            {work}
        </section>
    </main>
    <footer>
        <p>© 2024 Your Name</p>
    </footer>
</body>
</html>

占位符 {projects}{work} 将分别替换为项目和工作经验的生成 HTML 内容。

示例

您可以在这里看到使用 SiteSmith 生成的网站的实时示例。

此示例的源代码在 GitHub 上提供:bradeneverson.github.io

贡献

  1. 分支仓库。
  2. 创建一个新的分支(git checkout -b feature-branch)。
  3. 进行您的更改。
  4. 提交您的更改(git commit -am 'Add new feature')。
  5. 将更改推送到分支(git push origin feature-branch)。
  6. 创建一个新的拉取请求。

依赖项

~1.6–2.6MB
~51K SLoC