若是你有想过利用免费的Github服务来托管静态站点,你就必定用过很多站点生成器。大名鼎鼎的Jeklly,以及它的加强型变种Octopress。css
在你阅读了各式各样的教程、API文档以后,你终于开始写下第一篇博文。到这里还算是不错的体验,可是一段时间以后:html
preview
和build
慢如蜗牛plugin
、theme
看起来美好,可是build
更慢generator-pencil是一个yeoman generator。这个工具的特性:node
Markdown
来存储文章内容和附加数据(metadata
)Handlebar
来渲染页面,同时提供更强大的模板功能(partial、helpers等)Grunt
和一些子任务(build
、preview
、deploy
)完成若是你不明白上面这些工具也不要紧,由于,大多数状况下,你能够没必要修改任何配置。简单的模板和js文件,你也能够随意修改,事情比你想象中的简单得多。git
npm install yo grunt-cli -g npm install generator-pencil
因为要使用更快速的
node-scss
做为样式表编译操做;而node-scss
目前不支持node v0.11.x
。因此目前来讲,本模块目前也不支持最新的node
。不过你能够将node-scss
从任务列表中删除,这样将没有使用最新版node
的限制。github
mkdir mysite && cd mysite yo pencil
接下来,你会看到一些可交互的命令行提示:web
rural-potato
不是太好的名字,你最好写上更帅的名字git@github.com:RobinQu/mysite.git
。该地址的的gh-pages
分支将会成为咱们部署的目标。固然,你能够直接输入回车
跳过这个步骤,以后再整合你本身的部署流程。Grea writer
么?/
。例如,个人我的博客是 http://robinqu.me
,而不是http://robinqu.me/
。Markdown
文档?默认是src/contents/blog
文件夹,建议不修改。这是该向导最后一个问题,接下来程序会帮你安装各类依赖的工具和插件。shell
安装完成后,你获得一个以下的目录结构:npm
其实,程序还偷偷帮你新建了一篇文章,名字叫A Brand new page
。sass
文章放在src/contents/blog
文件夹下,并按照年、月、日分组。打开这篇新建立的文章:服务器
--- title: brand new page date: Wed May 14 2014 13:13:36 GMT+0800 (CST) template: article --- Enter your content here
内容十分简单,可是开头的这些代码,很多人会熟悉。对,和Octopress
等同样,geneartor-pencil
也支持在Markdown
内嵌入YAML格式的数据,做为这篇文档的属性信息。有一些属性是有特殊意义的,例如title
。这里详细的定义,请参考文档。
若是你以前选择了发布到Github
,并填写了GIT地址,那么你要确保当前项目的文件夹是一个初始化过的Git working copy
:
# 初始化git版本库 git init # 添加你的实际GIT版本库的远程地址 git remote add origin <your git repo url> # 添加目前的改动 git add . # 进行第一次提交 git commit -a -m "站点的起点"
不管是写了文章,仍是修改了配置,在进行预览或发布以前都必须进行提交。不然,你看到的将不会是你指望的内容。
说了这么多,咱们终于能够看看效果了:
grunt preview
这个命令会在本地的9000端口开启一个HTTP服务器。正常的输出开启是这样。你能够不关注输出内容,但你须要知道,当出现Waiting
字样时,表明全部任务都完成了, 你能够打开http://localhost:9000/看看了。
$ grunt preview Running "revision" task HEAD at revision 88e0eba Running "clean:build" (clean) task Running "writer:all" (writer) task Running "concurrent:build" (concurrent) task Running "imagemin:dist" (imagemin) task Minified 0 images (saved 0 B) Done, without errors. Execution Time (2014-05-14 05:35:46 UTC) loading tasks 3ms ▇▇▇▇▇▇▇▇▇▇▇▇ 25% imagemin:dist 9ms ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 75% Total 12ms Running "sass:build" (sass) task File dist/css/blog.css created. Done, without errors. Execution Time (2014-05-14 05:35:46 UTC) loading tasks 3ms ▇▇▇▇▇▇▇▇ 17% sass:build 14ms ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 78% Total 18ms Running "svgmin:dist" (svgmin) task Total saved: 0 B Done, without errors. Execution Time (2014-05-14 05:35:46 UTC) loading tasks 3ms ▇▇▇▇ 7% svgmin:dist 43ms ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 93% Total 46ms Running "htmlmin:dist" (htmlmin) task Minified dist/about.html 1.86 kB → 1.51 kB Minified dist/archive.html 2.31 kB → 1.67 kB Minified dist/blog/2014/5/14/brand-new-page/index.html 2.72 kB → 2.28 kB Minified dist/index.html 2.04 kB → 1.68 kB Minified dist/page/1/index.html 2 kB → 1.64 kB Done, without errors. Execution Time (2014-05-14 05:35:46 UTC) loading tasks 3ms ▇▇▇▇▇ 9% htmlmin:dist 31ms ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 89% Total 35ms Running "copy:resources" (copy) task Created 35 directories, copied 179 files Done, without errors. Execution Time (2014-05-14 05:35:46 UTC) loading tasks 2ms ▇ 1% copy:resources 190ms ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 98% Total 193ms Running "connect:preview" (connect) task Started connect web server on http://0.0.0.0:9000 Running "watch" task Waiting...
看起来一切正常,咱们打开http://localhost:9000/。
事情就是这么简单!你已经能够在这个简单的站点里面转转了。事实上,程序已经帮你作好了这些页面:
/
/about.html
/archve.html
/page/{page}
如何建立新文章?
yo pencil:post "Another post"
新的文章就生成好了;打开你喜欢的Markdown编辑器开始写做吧!
一样也是一条命令:
grunt deploy
你能够到你以前设置的线上地址查收部署结果了。
generator-pencil
的力量来源,大部分逻辑存在于这个Grunt任务重src/templates/partials/footer.hbs
这个模板吧,这和普通Web开发没有什么区别Octopress
迁移你的Markdown文档,这也是没有压力的,generator-pencil
彻底兼容这些文档。你须要作的就是文件拷贝工做。