#blog-post #platform #markdown #directory #data #system #page

bin+lib texted

一个 Markdown 博客平台,让您掌控自己的数据

15 个版本 (1 个稳定版)

1.0.0 2024 年 8 月 23 日
0.3.6 2024 年 8 月 2 日
0.3.5 2024 年 6 月 17 日
0.3.2 2024 年 5 月 29 日
0.2.6 2024 年 4 月 28 日

#59 in 模板引擎

Download history 388/week @ 2024-04-27 23/week @ 2024-05-04 147/week @ 2024-05-18 168/week @ 2024-05-25 305/week @ 2024-06-01 39/week @ 2024-06-08 166/week @ 2024-06-15 6/week @ 2024-06-22 40/week @ 2024-07-27 53/week @ 2024-08-03

每月 93 次下载

Apache-2.0

365KB
3K SLoC

Texted - 解放您的文本!

为什么我创建了一个博客系统而不是使用现有的博客平台呢?

  1. 我在一些其他平台上写作,例如 dev.to/thiagomg,但是如果它们丢失了我的数据或者关闭了平台,我不想失去我所写的。
  2. 我想学习 Rust,因此我创建了一个博客系统。
  3. 如果我能以这里的方式获取博客文章,并将它们添加到 github/gitlab 等,那么它们就会正常工作(给文件添加一个标题)

入门

安装

cargo install texted

启动一个新的博客

# Let's create a new directory for our new blog
mkdir ~/my-awesome-blog && cd ~/my-awesome-blog
# And now create the skeleton of a fully functional blog
texted-tool bootstrap --out-dir .

现在,让我们运行并测试它。

# Inside the same ~/my-awesome-blog directory, run
texted

然后在您的浏览器中打开 http://127.0.0.1:8001/

添加新文章

Texted 默认缓存所有 URL 和文章以获得最佳性能。请退出 texted 并再次运行,以在列表中查看新文章。如果您想禁用渲染缓存以在重新启动之前查看文章内容的变化,请在 texted.toml 配置文件中将 rendering_cache_enabled = false 修改为 false。

# Still inside the same ~/my-awesome-blog directory, run
pushd posts/

# This will create one directory such as 20240428_how_to_write_a_new_blog_post
# with a file index.md inside.
texted-tool post --title "How to write a new blog post" -o dir

# And let's run texted again
popd
texted

现在您在文章列表中有一个新的文章可用

从源码构建

如何构建?

cargo build --release

如何运行?

cargo run --bin texted

如何定制我的站点?

您可以使用 mustache 模板 创建您的 HTML 模板。示例显示所有支持的字段。

模板可以包含图片、css 和 js 等。那些支持文件应位于 public 目录中

在文件 texted.toml 中,您可以在键中配置位置

  • template_dir
  • public_dir

如何添加文章和页面?

文章位于配置键 posts_dir 指向的目录中,页面位于键 pages_dir 中。

页面和文章之间的唯一区别是

  1. 页面使用 page.tpl 模板渲染。文章使用 view.tpl 模板渲染
  2. 文章列表由列表API(server-address/list)提供,而页面则不在列表中

从现在起,所有关于文章目录结构的内容也适用于页面

添加文章有2种方式。在配置的posts目录内,您可以创建一个markdown文件或一个目录。

文件文章

假设您的服务器在本地的8080端口(127.0.0.1:8080)运行,且文章位于post目录下。

文件文章是纯文本文章(或没有本地图片的文章)。文件名将用作URL。例如:

文件 post/post_without_images.md 将通过以下URL访问:http://127.0.0.1:8080/view/post_without_images

目录文章

包含文件 index.md(在文件 texted.toml 中可配置)的目录将被视为文章。例如:

目录 post/post_with_image 将通过以下URL访问:http://127.0.0.1:8080/view/post_with_image

文章结构

标题

每个文章或页面markdown文件都包含一个带有唯一标识、日期和作者的标题。接着是文章标题。HTML注释是可选的,但某些markdown编辑器如果没有HTML注释可能会损坏标题,因此我在示例中添加了它

<!--
[ID]: # (21c1e9ad-4ebb-4168-a543-fbf77cc35a85)
[DATE]: # (2024-02-12 22:54:00.000)
[AUTHOR]: # (thiago)
-->

# How does it work?

之后的都是文章的主体

更多

在文章列表中,展示的是文章主体的部分。为了确定何时停止,您需要添加<!-- more -->标签。

请参见post_without_images.mdpost_with_image/index.md以获取示例

提示

如果您运行texted-post二进制文件,它将为您创建一个带有标题和示例主体的文章框架。

依赖项

~28–41MB
~753K SLoC