Skip to content

Latest commit

 

History

History
182 lines (153 loc) · 5.57 KB

CN.md

File metadata and controls

182 lines (153 loc) · 5.57 KB

Yohe

logo

npm npm npm

一个静态博客生成器,采用Node.js开发。Yohe = 哟呵,一个会让你发出”哟呵,不错哦“感叹的静态博客生成器。

线上demo: http://luoxia.me/yohe_site/

English doc

功能

  • 简单易用,快速
  • 本地预览效果
  • 可定制化信息和主题
  • 新建自定义页面,可定制化导航菜单
  • 支持标签,分类,archives,分页等基础设施
  • 支持通过Github评论(gitment支持)
  • 首页可过滤指定分类文章

安装

$ npm install yohe -g

快速开始

获取帮助

$ yohe --help

初始化博客

$ yohe init myblog
$ cd myblog

该命令会初始化博客目录,包括初始化主题,文章,自定义页面等目录,以及加载默认配置文件

创建新文章

$ yohe new <postName>

该命令在source/_posts/下新建<postName>.md文件,在这里写作

渲染博客文件

$ yohe build

该命令会渲染博客到public目录

本地预览

$ yohe server

该命令会在本地起一个静态文件服务器,端口,子路径等信息可通过config.json配置

新增自定义页面

$ yohe page <pageName>

该命令会在source/_extra下生成<pageName>.md文件,默认布局为about页面布局

配置文件

运行yohe init后会生成config.json,配置说明:

{
    "basic": {
        "title": "My Blog", // 博客标题
        "author": "laoqiren", // 博客作者
        "description": "爱技术,爱生活", // 个性签名
        "root": "" // 博客根目录,当博客网站位于子路径如"http://luoxia.me/yohe_site"时,配置为"/yohe_site"
    },
    "theme": {
        "themeName": "default",  // 主题名字
        "highlightTheme": "railscasts", // 代码高亮主题,所有可用主题列表参照"https://github.com/isagalaev/highlight.js/tree/master/src/styles"
        "per_page": 6,//每页展示的文章数
        "filter": ["life","随笔"],  // 首页过滤分类文章,比如生活随笔文章不显示在首页列表
        "navPages": [     // 自定义导航菜单的页面标题和链接
            {
                "title": "标签",
                "url": "/tags"
            },
            {
                "title": "关于",
                "url": "/about"
            },
            {
                "title": "生活随笔",
                "url": "/categories/life/"
            }
        ],
        "reward": {  // 打赏功能配置
            "enabled": true,
            "imgName": "alipay.jpg",  // 二维码图片名称
            "words": "打赏"   // 打赏说明
        }
    },
    "server": {
        "port": 3000 //本地预览服务器端口
    },
    "gitment": {   // gitment评论功能相关配置,gitment使用教程参照”https://github.com/imsun/gitment“
        "owner": "",
        "repo": "",
        "oauth": {
            "client_id": "",
            "client_secret": ""
        }
    }
}

更丰富的配置正在开发中。

文章格式规范

参照下面的例子:

---
title: Cluster模块
date: 2016-11-27
tags: [负载均衡,集群,多进程]
layout: post
comment: true
categories: Nodejs
---

其中layout默认为post,comment默认为true

如何发布

Yohe最终渲染结果在public目录,可采用多种方式起一个静态文件服务器,将public目录发布。

如何开发主题

layouts:

├── about.html    // 关于页面布局(必须)
├── index.html    // 首页布局(必须)
├── list.html     // 特定分类和标签文章列表布局(必须)
├── post.html     // 文章详情页布局(可更名)
└── tags.html     // 标签云布局(必须)
└── ...           // 自定义的布局

暴露的模板变量:

基本变量:

变量名 内容
config 配置对象,参考config.json
tags 标签数组,对每个标签项:tag.name,tag.posts(Array),tag.url
categories 分类数组,对每个分类项目: category.name, category.posts,category.url
archives 归档数组(主要包含每个归档的文章列表),对每个归档项: archive.name,archive.posts
archivesList 归档信息列表,对每个归档项: archive.arrOfDate,archive.url

特定变量:

页面 特定变量
post.html post: post.title, post.date, post.categories, post.tags, post.content
list.html title(具体分类名,标签名,归档日期),posts(过滤后的文章数组),pageNumber(分页数),sumpages(总页数), flag("tags" or "categories" or archives"其中一个)
about.html content: about.md或者其他自定义页面的.md文件内容

assets:

静态资源文件放在assets目录下

其他技巧

  • 要设置更改logo,替换assets/images/logo.png为你自己的logo图片,但名称依旧为logo.png
  • 关于页面为source/_about/about.md
  • 指定首页过滤分类文章,可以很方便地实现blog in blog
  • 文档名和分类名中的空格用-代替

TODOs

  • 默认主题完善
  • 统计等功能
  • 更丰富的配置

LICENSE

MIT.