2 个版本

0.1.2 2024 年 6 月 24 日
0.1.0 2022 年 4 月 29 日

#515命令行工具

CDDL-1.1

28KB
101

zb:一个 zip 博客

这是我创建一个自包含网站的方法。整个网站将直接嵌入到服务器二进制文件中,因此这可能是您见过的最便携的网站。

zb 的一个独特功能是它可以渲染 HTML、Markdown 和 Org-Mode 文件,因此如果您更喜欢编写 .org 文件而不是 HTML,zb 可以满足您的需求。

动机

我第一次在 Ted Unangst 的博客 中看到“单二进制网站”的概念,他在那里抱怨 Go 无法像这样轻松做到这一点,因为其对嵌入 Zip 文件的支持不完整。既然我时不时地会玩 Go 和 Rust,我就想“在 Rust 中做这个有多难?”

令人惊讶的是(对我而言),这实际上并不难。

如何使用它?

您需要一个包含您网站的 Zip 文件。对于默认的起始页面,zb 将在根路径中搜索以下文件之一

  • index.htm
  • index.html
  • index.md
  • index.org

如果您想使用不同的文件名,可以在启动应用程序时传递 --defaultpage name.ext

该 Zip 文件中的其他所有内容都可以是您选择的任何文件。它们之间的相对引用将正常工作。(如果不起作用,请提交一个错误报告。)

第一步...

  • 使用 Fossil 获取最新代码...
> fossil clone https://code.rosaelefanten.org/zb
> cd zb
  • ... 或者 Git
> git clone https://github.com/dertuxmalwieder/zb
> cd zb
  • 安装 Rust,然后使用 cargo 构建 zb
> cargo build --release

在 Unix 和类 Unix 系统上

现在,将您的 zb 二进制文件与您的 Zip 文件连接起来。假设您的 Zip 文件名为 index.zip

% cat ./target/release/zb index.zip > ./zb

在 Windows 上

现在,将您的 zb.exe 与您的 Zip 文件连接起来。假设您的 Zip 文件名为 index.zip

# PowerShell
> cmd /c copy /b .\target\release\zb.exe+.\index.zip .\zb.exe

# cmd
> copy /b .\target\release\zb.exe+.\index.zip .\zb.exe

完成后...

运行连接的 zb 二进制文件,您的网站将通过端口 8000 提供服务。(您可以根据需要更改该端口:使用 zb --port 8081 将它设置为在端口 8081 上运行。)从现在开始,每次您想更新您的网站时,只需创建一个新的 Zip 文件并重复连接操作。(应该可以轻松自动化该任务。)

自动转换的 HTML 路由

请注意,对于.org.md和HTML文件,文件扩展名是可选的,因此文件stuff/demofile.md也可以通过localhost:8000/stuff/demofile访问。

所有文件的搜索顺序为

  1. /[路径]
  2. /[路径].md
  3. /[路径].org
  4. /[路径].htm
  5. /[路径].html

如何贡献代码

  1. 阅读并同意《道德规范》
  2. 默示同意《许可协议》。没有人会读那些。我也不会。
  3. 找出是否有人提交了GitHub Issue或甚至发送了Pull Request。相应行动。
  4. 给我发送一个补丁,无论是通过电子邮件(git at tuxproject dot de)还是作为一个GitHub Pull Request。请注意,GitHub只提供镜像,所以如果你选择后者,你会使我加倍工作。:-)

如果你做得很好(并且经常这样做),我可能会授予你上游Fossil仓库的提交访问权限。

捐赠

编写此软件并保持其可用性占用了大多数人本应花在与朋友相处的时间。当然,我绝对接受经济补偿。

谢谢。

联系方式

依赖项

~26–39MB
~710K SLoC