A local static blog site generator and previewer,that help you deploy blog on github pages
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
blogen
.gitignore
LICENSE
README.md
setup.py

README.md

blogen

A local static blog site generator and previewer,that help you deploy blog on github pages

Can you read chinese?yes i cam

注意:刚更新了一个版本到pypi,因为生成的markdown文件目录名的问题导致了push到库后build启动了jekyll编译失败导致无法build发布,所以修改了目录名,请已经按装了的童鞋尽快更新到最新版本0.0.0.3 pre

项目的由来

为了弄公司的开发博客,很装13的选了github来host。为了SEO的缘故,以前那个 jsloger 就不怎么适合了。本着DRY的原则去考察了一下Jekyll,但是估计和ruby8字不和,搜索一下在github搭建blog大堆人都推荐这货,难道那家用着都这么欢乐么?事实是这货得自己创建一堆文件夹,自己创建一堆模板。文档里提到的Rake啥的,根本跑着不欢乐,down源码一看写那么多,就生成个静态文件的blog至于么?所以评估了一下,如果折腾Jekyll估计花两天,这两天折腾出来能弄的东西估计我花一天时间就用Python写好了。于是我就用Python写了目前这货。Jekyll能见的80%的功能应该都有,而且安装简单使用简便。如果对ruby没有强烈的爱就试试本货吧。欢迎Pythoner一起来完善。

本货其实不怎么需要文档

本货只关注发布博客的内容和内容的格式化。格式化的方式交给了markdown和jinja2的模板。然后提供了几个命令用于串联相关的操作而不用自己去完成,所以使用步骤异常的简单。

使用的步骤:

###1 安装 $sudo pip install blogen ###2 创建站点 建个目录,进入后执行一条命令即可

$mkdir myblog
$cd myblog
$blogen --init 站点名称

这个命令会创建配置文件config.yaml和一大堆目录

  • _data是存放blog的markdown文件的地方
  • html是生成的html文件存放的地方
  • templates是模板文件。这里只是生成了一个最简单的,模板可以完全根据自己的需要来改
  • static是存放站点的CSS,JS和图片文件的地方

注意:templates目录下会默认生成 index.html 和 post.html,这两个文件一个是首页模板和内容页模板,可以自由修改,保持名字不变即可

###3 发布第一篇blog 发布blog只需要一条命令即可

$blogen --post "hello world"

这条指令会在posts目录创建一个.md的markdown文件。注意,本货只支持markdown,因为其他太多的格式我不会,欢迎有需要的同学帮我添加其他格式的支持。

生成文件的格式是 年-月-日-hello_word.md 标题参数中的空格会被替换成下划线。你也可以通过直接指定日期的方式来创建blog(比如在迁移老blog数据的时候)

$blogen --post "2012-1-1-hello word"

创建后随便找个文本编辑器或者markdown的编辑器就可以去编辑blog的文件了。 新创建的.md 文件头部有一个固定的头部,定义在两行 /// 之间。格式为 变量名=值 其中 title 和 post_time 是固定的变量,必须存在不能删除,但是可以修改值,比如用英文文件名创建的title值是英文的,在这里可以改成中文,这样文件名是英文的避免一些系统的中文路径不兼容问题。 在此之外可以自己定义额外的变量,这些变量会作为post对象的属性在渲染模板的时候被注入到对象中

Mac下推荐Mou。Windows下可以用 markdownpad

###4 生成 写好blog后需要经过生成的过程,当然本货在预览的时候已经悄悄的帮你生成过了。当然如果通过markdown可视化编辑器写的几乎不需要预览。就可以通过一条命令直接生成html后上传服务器拉。

$blogen --rebuild

现在暂时是打印了生成的过程列表。我想以后还是改成用显示百分比的方式比较好,如果遇到一个疯狂写手的话

###5 预览 预览部分其实用的bottle来创建的本地测试站点,我默认打开的debug,方便遇到问题大家好给我反馈

$blogen --server

站点启动后通过访问 http://127.0.0.1:5000 即可看到内容了。

站点已经设置成自动reload,所以这个时候就可以开心的修改模板文件添加各种css,js,以及图片文件了。比如添加base.html到templates目录,然后修改index.html以及post.html继承base,blabla,剩下的就跟做一个静态站没啥区别了。

注意:在static目录放内容的时候现在很蛋痛的只支持往子目录里放内容,而且只支持一级子目录。比如css需要在static下建一个子目录css,然后放到css目录里,js同理可得

###6 配置 修改配置文件settings.yaml即可。要注意默认生成的两条不能去掉。 可以自己添加配置项到配置文件中。 配置文件会生成一个对象config被注入到模板环境,所以自定义了配置通过{{ config.xxx }} 就能访问了

###7 post对象的属性

  • filename 文件名,不带后缀的
  • title 标题
  • post_date 发布时间(python的datetime对象)
  • md_content Markdown格式的内容
  • html_content HTML格式的内容

动态属性: 通过markdown文件头部定义的site_name 和 post_time 之外用户自定义的变量

###8 其他需要自己做的或者知道的

  1. 学会jinja2的模板,因为本货的模板是基于jinja2的
  2. 会配置Python环境,如果是windows用户起码会装setuptools,pip什么的
  3. 自己做个静态站点不成问题,不然你怎么改模板啊?当然自己下一套blog模板折腾一下改吧改吧也是能弄出来的
  4. comment?自己折腾,第三方的用啥都可以
  5. 站点计数?也是,前端代码都自己折腾了,这货也好说了
  6. 学会用git,不然你怎么向github提交自己写的内容啊?

###9 已经发现的bug

注意:刚更新了一个版本到pypi,因为生成的markdown文件目录名的问题导致了push到库后build启动了jekyll编译失败导致无法build发布,所以修改了目录名,请已经按装了的童鞋尽快更新到最新版本

这个问题已经解决了

很不幸,刚发到pip就发现了一个bug。我忘了在settings里面放配置首页列表分页的页大小的参数了。   
今天中午前在pip装过的同学只有换新版才能正常。

###10 New Feature

####0.0.0.7 pre:

  1. 将markdown文件头定义的变量动态注入到post对象里。这样就可以在模板里根据这些数据来动态生成点东西
  2. 修改了生成的markdown文件头格式,为了不和Jekyll的头部混淆

###11 打算增加的Feature

  1. 生成单页,类似Wiki的方式来组织页面