又造了一个新轮子——Snow 静态博客生成器

查看 26|回复 0
作者:honmaple   
为什么叫 Snow
没啥特别的意义,源于自然风景,天气的名称,像 rain ,thunder ,feng 。。。都是好名称
快速开始
首先下载二进制文件到本地, 然后执行初始化
└──╼ ./snow init mysnow
Welcome to snow 0.1.0.
> Where do you want to create your new web site? [mysnow]
> What will be the title of this web site? [snow]
> Who will be the author of this web site? [snow]
> What is your URL prefix? (no trailing slash) [http://127.0.0.1:8000]
> Do you want to create first page? [Y/n]
这时会生成一个 mysnow 的目录, 进入该目录,然后执行 snow server 就可以访问 http://127.0.0.1:8000/posts/index.html 查看第一篇文章了
└──╼ cd mysnow
└──╼ ./../snow server
INFO Done: Static Processed 0 static files in 39.691µs
INFO Done: Page Processed 1 normal pages in 12.218357ms
INFO Done: Section Processed 1 posts in 12.327303ms
INFO Done: Taxonomy Processed 1 authors, 1 categories, 3 tags in 12.33494ms
INFO Listen http://127.0.0.1:8000 ...
为什么不用 Hugo
  • 不太喜欢 Hugo 使用的主题模版,虽然它很快,Snow 采用的是类 Django 的 Pongo2
  • hugo 缺少可扩展性, 当然这是 Go 的问题,不是 Hugo 的问题,很早之前就想从 Pelican 迁移到 Hugo,但有一个加密功能一直没法实现, 有第三方插件都是需要先生成 html ,再调用第三方工具来进行加密, 原本想直接改一下 Hugo 的源码自己编译一个二进制来支持, 但后来只能说声打扰了
  • 就想造个轮子,自己使用自己写的生成器还是很有成就感的 /😊

    有哪些特色功能

  • 支持 orgmode:hugo 也支持,但 snow 用的解析库是我自己写的org-golang,功能少,但对于只把 orgmode 作为标记语言来使用已经足够了

  • shortcode: 有点像 hugo 的 shortcode ,但支持对渲染后的 HTML 进行修改,比如我有一系列的图片需要添加 fancybox ,传统方式一是自定义 markdown 渲染函数,二是使用 JS 进行处理,而在 Snow 中只需要创建一个 shortcodes/img.html
    {%- set show = attr.src %}
    {%- set thumb = attr.src + "-thumb" %}

      


    就可以直接生成带data-fancybox的标签

  • hooks: 虽然很鸡肋,如果要添加插件就得重新编译二进制,但有总比没有的好,有需要的人也可以自己写插件然后单独编译,现在的 shortcodei18n 等功能都是基于 hooks 实现的, 像是 pelican 的 hook 可以让我不需要修改原来的 .md 或者 .org 文件就能直接使用 Snow, 关于 Go 插件如果有其它想法的可以告诉我

  • build file: 直接命令行筛选文章,不仅仅是草稿, 比如直接隐藏所有 tag 为 life 的文章
    snow server -F 'not ("life" in tags)'

    当然,Snow 本身是基于我之前使用 Pelican 的需求,比如 orgmode 的支持,文章加密, 子分类等, 没有太多复杂的功能,如果需要更复杂的功能还是推荐 Hugo,毕竟用的人多,主题也多
    如果之前使用的是 Pelican,又对 Snow 感兴趣的可以参考我写的《博客系统从 Pelican 迁移至 Snow 》
    开源地址: https://github.com/honmaple/snow
  • 您需要登录后才可以回帖 登录 | 立即注册

    返回顶部